2010-12-18 85 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