如何将UserControl添加到WPF窗口上的Panel
我想我错过了一些在这里应该很明显的东西,但是我在这一张上留下了一个空白。
我已经构建了一个非常原始的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>
即使有这么简单的东西,Visual Studio 2010中的Designer也无法加载主窗口。 给出的错误是:
'LoggerControl'类型的值不能被添加到'UIElementCollection'类型的集合或字典中。
这个错误消息在主要搜索引擎中只有一个不相关的命中(加上重复),所以我没有找到任何有用的帮助。 微软自己的文档似乎暗示这应该起作用。
任何想法如何解决这个问题?
<UserControl x:Class="My.LoggerControl"
xmlns:local="clr-namespace:My.LogTest"
看起来你可能在命名空间中犯了一个错误? 当您导入My.LogTest并将其分配给xml-prefix local时,LoggerControl被列为名称空间My。 将其更改为:
xmlns:local="clr-namespace:My"
我认为它应该起作用。 否则,修复LoggerControl声明。
链接地址: http://www.djcxy.com/p/10933.html