我有一个基类调用 PopupWindow,它继承自 UserControl。 PopupWindow 没有关联的 xaml 页面,它只是一个继承自 UserControl 的常规类
然后我有另一个继承自 PopupWindow 的 UserControl。现在这是一个正确的用户控件,因为它具有关联的 xaml 页面。
我已经将根 xaml 标记更改为像这样的 PopupWindow
<local:PopupWindow
.....
</local:PopupWindow>
其中 local 是此 PopupWindow 中存在的命名空间。
但是我不断收到一个错误,提示 PopupWindow 在给定的命名空间中不存在。
我做错了什么?
谢谢
最佳答案
我已经设法让这个工作如下:
家长控制:
public class PopupWindow : UserControl
{
}
继承控制权:
代码隐藏:
public partial class PopupWindowChild
{
public PopupWindowChild()
{
InitializeComponent();
}
}
XAML:
<Controls:PopupWindow x:Class="MyNamespace.Controls.PopupWindowChild"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MyNamespace.Controls">
<TextBlock Text="Blah" />
</Controls:PopupWindow>
主视图:
<Window x:Class="MyNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MyNamespace.Controls">
<Controls:PopupWindow />
</Window>
在构建代码之前,您的 XAML 不会识别您的控件。构建并运行后,我在主视图中看到了预期的“Blah”。
关于c# UserControl基类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829949/