【问题标题】:c# UserControl base class inheritancec# UserControl 基类继承
【发布时间】:2013-05-30 07:06:02
【问题描述】:

我有一个基类调用 PopupWindow,它继承自 UserControl。 PopupWindow 没有关联的 xaml 页面,它只是一个继承自 UserControl 的常规类

然后我有另一个继承自 PopupWindow 的 UserControl。现在这是一个适当的用户控件,其中有一个关联的 xaml 页面。

我已将根 xaml 标记更改为像这样的 PopupWindow

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

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

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

我做错了什么?

谢谢

【问题讨论】:

    标签: c# xaml inheritance user-controls


    【解决方案1】:

    我已经设法让这个工作如下:

    家长控制:

    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 : UserControl 怎么办?
    • 好东西,很高兴我能提供帮助。请务必标记答案!查看this,了解有关使用泛型的 WPF 控件的更多信息。
    • PopupWindowChild 背后的代码本身并不显示任何继承 - 我假设来自 XAML 的自动生成的代码将包含它? (在其部分类声明中)?
    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多