Creo que me falta algo que debería ser obvio aquí, pero me estoy quedando en blanco en este.Cómo agregar UserControl a un Panel en una Ventana de WPF
he construido un control de usuario muy primitiva que contiene nada más que un TextBox
para su uso como una ventana de registro:
<UserControl x:Class="My.LoggerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Name="LoggerView">
<Grid x:Name="LayoutRoot">
<TextBox x:Name="LogWindow" AcceptsReturn="True"/>
</Grid>
</UserControl>
no espero que para ser la mejor manera de hacerlo, pero debe ser lo suficientemente bueno para un prototipo.
El código subyacente es igualmente simple:
public partial class LoggerControl : UserControl, ILogger
{
public LoggerControl()
{
InitializeComponent();
}
private LogLevel level = LogLevel.Warning;
#region ILogger
public LogLevel Level
{
get { return level; }
set { level = value; }
}
public void OnError(string s)
{
if (level >= LogLevel.Error)
LogWindow.AppendText("ERROR:::" + s + "\n");
}
// ...
#endregion
}
Lo que no puedo entender es cómo añadir este control para mi MainWindow.xaml
. Simplificando, digamos que mi ventana se ve así:
<Window x:Class="My.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:My"
Title="Test" Height="350" Width="525">
<Grid>
<local:LoggerControl x:Name="LogView" />
</Grid>
</Window>
Incluso con algo tan simple, el diseñador en Visual Studio 2010 no puede cargar la ventana principal. El error dado es:
No se puede agregar un valor de tipo 'LoggerControl' a un diccionario collectionor o de tipo 'UIElementCollection'.
Este mensaje de error tiene solo un impacto no relacionado en los principales buscadores (más duplicados) por lo que no he encontrado ninguna ayuda útil. La propia documentación de Microsoft parece implicar que esto debería funcionar.
¿Alguna idea de cómo solucionar esto?
Por extraño que parezca, cuando construyo una aplicación de prueba mínima no tengo este problema. Que podria causar esto? – IanGilham