C# UserControl基类继承

3

我有一个名为PopupWindow的基类,它继承自UserControl。PopupWindow没有关联的xaml页面,它只是一个继承自UserControl的普通类。

然后我有另一个继承自PopupWindow的UserControl。现在这个控件是一个正常的用户控件,并且具有关联的xaml页面。

我已经将根xaml标签更改为PopupWindow,像这样:

<local:PopupWindow
  .....
</local:PopupWindow>

其中 local 是此 PopupWindow 存在的命名空间。

但我一直收到一个错误,即所给的命名空间中不存在 PopupWindow。

我做错了什么?

谢谢

1个回答

2

我已经按照以下步骤使它正常工作:

父控件:

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”。


太好了,你成功了。如果PopupWindow使用泛型,例如public class PopupWindow<T>:UserControl,会怎么样? - There is no spoon
很棒的东西,很高兴能够帮忙。请确保标记答案!查看这个链接以获取更多关于使用泛型的 WPF 控件的信息。 - Rob
PopupWindowChild的后台代码本身不显示任何继承 - 我假设从XAML自动生成的代码将在其部分类声明中包含此内容? - StayOnTarget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接