我已经阅读了有关该主题的多篇帖子,但仍然无法使其成功。
我想要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。
答案 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。