Я думаю, что упускаю что-то, что должно быть здесь очевидным, но я ничего не понимаю в этом. .
Я создал очень примитивный UserControl, содержащий только TextBox
для использования в качестве окна журнала:
<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>
Я не ожидаю, что это будет лучший способ сделать это, но он должно хватить для прототипа.
Код программной части также прост:
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
}
Я не могу понять, как добавить этот элемент управления в мой MainWindow.xaml
.Упрощая, скажем, мое окно выглядит так:
<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>
Даже с такой простой задачей Designer в Visual Studio 2010 не может загрузить главное окно. Выдается следующая ошибка:
Значение типа «LoggerControl» не может быть добавлено в словарь-коллекцию или словарь типа «UIElementCollection».
Это сообщение об ошибке имеет только одно несвязанное обращение в основных поисковых системах (плюс дубликаты), поэтому я не нашел никакой полезной помощи. Собственная документация Microsoft, кажется, подразумевает, что это должно работать.
Есть идеи, как это решить?