我不理解继承wpf用户控件的语法

时间:2010-12-18 16:37:26

标签: wpf

我已经阅读了有关该主题的多篇帖子,但仍然无法使其成功。

我想要2个用户控件slidertype1和slidertype2应该从slidercommontype继承,所有都在同一个namespacecommon中,有人知道这个简单用例的语法吗?

http://jamescrisp.org/2008/05/26/wpf-control-inheritance-with-generics/启发

我试过了:

<namespacecommon:slidercommontype x:Class="namespacecommon.slidertype1">

但是我得到了namespacecommon:在xml名称空间中不存在slidercommontyp。

1 个答案:

答案 0 :(得分:3)

只要基类没有与之关联的XAML文件,就很容易了。尝试使用XAML合并用户控件的可视方面并不是真正支持的方案。

话虽如此,只需创建你的类SliderCommonType(虽然我会称之为SliderBase或其他东西。)

namespace MyControls {
    public class SliderBase : UserControl {
    }
}

然后根据它创建两个控件。我将展示一个例子,另一个应该是显而易见的。

<Local:SliderBase x:Class="MyControls.SliderType1"
                  xmlns:Local="clr-namespace:MyControls">
</Local:SliderBase>

代码隐藏看起来像这样:

namespace MyControls {
    public class SliderType1 : SliderBase {
    }
}

关键是您的XAML文件必须引用基类,这需要将<UserControl>元素更改为<Local:SliderBase>,而{{1}}元素又需要导入XAML名称空间。

使用默认模板添加UserControl时,您只需更改其创建的代码即可反映上述更改。它比尝试从头创建它容易得多。

最后要注意的一点是 - 在您可以在派生控件上使用可视化设计器之前,您需要成功编译应用程序。这是因为设计人员需要能够在设计时实例化SliderBase。