2010-06-14 52 views
1

我有一個全球/共享的ResourceDictionary像這裏面一個DataTemplate靶向於數據類型:打靶的DataTemplate只對某些觀點

<DataTemplate DataType="{x:Type foo:Bar}"> 
    <!-- My DataTemplate visual tree goes here... --> 
</DataTemplate> 

這DataTemplate中代替我所有的富:我的所有視圖欄類型(用戶控件/視窗)。我想要做的只是將此模板應用於某些視圖,並保持其他視圖不受此DataTemplate影響。我可以將這個DataTemplate複製到每個視圖的Resources部分,但我不想複製/粘貼DataTemplate的內容,這會導致維護頭痛。

回答

2

你在這裏使用的是叫做implicit data template。你正在尋求一個明確的。要做到這一點,你可以使用顯式的資源鍵:通過Merged Dictiories內部使用適當的控制/頁

<ContentPresenter ContentTemplate="{StaticResource MyStyle}" .../> 

另一個解決方案是一個資源字典(與隱式數據模板):

<DataTemplate x:Key="MyStyle" DataType="{x:Type foo:Bar}"> 
    <!-- My DataTemplate visual tree goes here... --> 
</DataTemplate> 

,後來在XAML 。

我更喜歡第一種方法,因爲它更容易維護(隱式樣式難以追蹤)。

+0

謝謝!第二種方法爲我工作。我不能使用第一種方法,因爲我沒有對foo的控制:創建條形圖類型,它們是我隱式定位的第三方控件內部類型。 – huseyint 2010-06-14 15:13:29