2010-12-18 70 views
0

我已经阅读了关于该主题的多篇文章,但仍无法使其工作。我不明白继承wpf用户控件的语法

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

激励从http://jamescrisp.org/2008/05/26/wpf-control-inheritance-with-generics/

我想:

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

但我得到了namespacecommon:slidercommontyp不XML命名空间存在。

+1

到目前为止您尝试过哪些语法?什么语言-C#或VB.NET? – 2010-12-18 16:43:32

+0

我已经更新见上面的感谢。 – user310291 2010-12-18 16:51:27

回答

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>这又需要一个XAML命名空间导入。

使用默认模板添加UserControl时,您可以更改其创建的代码以反映上述更改。这比试图从头开始创建要容易得多。

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

+0

非常感谢你的作品。 – user310291 2010-12-18 16:58:25