我想我錯過了一些在這裏應該很明顯的東西,但我在這一張上留下了一個空白。如何將用戶控件添加到WPF窗口上的面板上
我已經建立了包含無非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>
即使有這麼簡單的東西,在Visual Studio 2010設計器無法加載主窗口。給出的錯誤是:
'LoggerControl'類型的值不能被添加到'UIElementCollection'類型的集合或字典中。
這個錯誤信息在主要的搜索引擎中只有一個不相關的命中(加上重複的),所以我還沒有找到任何有用的幫助。微軟自己的文檔似乎暗示這應該起作用。
任何想法如何解決這個問題?
奇怪的是,當我構建一個最小測試應用程序時,我沒有這個問題。什麼會造成這種情況? – IanGilham