Myślę, że brakuje mi czegoś, co powinno być oczywiste, ale na tym rysunku rysuję pustkę.Jak dodać UserControl do panelu na oknie WPF
I został zbudowany bardzo prymitywny UserControl zawierający nic więcej niż TextBox
do wykorzystania jako okno dziennika:
<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>
Nie oczekuję, że aby być najlepszym sposobem, aby to zrobić, ale powinien być wystarczająco dobrym na prototyp.
opóźnieniem kodu jest równie prosta:
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
}
Rzecz nie mogę dowiedzieć się, jak dodać tej kontroli do mojego MainWindow.xaml
. Upraszczając, powiedzmy, że moje okno wygląda następująco:
<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>
Nawet z czymś tak prostym, Designer in Visual Studio 2010 nie może wczytać głównego okna. Podany błąd to:
Wartości typu "LoggerControl" nie można dodać do słownika kolekcjonerskiego typu "UIElementCollection".
Ten komunikat o błędzie zawiera tylko jedno niepowiązane trafienie w głównych wyszukiwarkach (plus duplikaty), więc nie znalazłem żadnej przydatnej pomocy. Dokumentacja Microsoftu wydaje się sugerować, że to powinno działać.
Każdy pomysł, jak rozwiązać ten problem?
Co dziwne, gdy buduję minimalną aplikację testową, nie mam tego problemu. Co może spowodować to? – IanGilham