2011-02-08 25 views
1

我和列表視圖在這樣做,我可以定義一個資源2級的TreeView:如何使用DynamicResource與TreeView控件,這樣我可以有使用相同的密鑰

<UserControl.Resources> 
    <GridView x:Key="MyGrid" x:Shared="False"> 
     <!-- Defines what's in the grid view --> 
    </GridView> 
</UserControl.Resources> 

然後我可以有兩種觀點使用相同的網格:

<ListView View="{DynamicResource MyGrid}" ItemsSource="{Binding Path=TodaysItems}"/> 
<ListView View="{DynamicResource MyGrid}" ItemsSource="{Binding Path=TomorrowsItems}"/> 

我想用TreeViews做同樣的事情。我定義了我的樹視圖:

<UserControl.Resources> 
    <TreeView x:Key="MyTreeView" x:Shared="False"> 
     <!-- Defines what's in the Tree view --> 
    </TreeView> 
</UserControl.Resources> 

但我不能找到我需要做的

<TreeView ???="{DynamicResource MyTreeView}" ItemsSource="{Binding Path=ClientData}"/> 
<TreeView ???="{DynamicResource MyTreeView}" ItemsSource="{Binding Path=CustomerData}"/> 

可我甚至做到這一點?

回答

1

你不能用TreeView來做到這一點。你可以用ListView這樣做的原因是它有一個屬性View,可以設置爲不同的視圖。這種情況下的視圖不是一個獨立的UI元素 - 它只是可以說,「設置」爲ListView。而TreeView是一個像ListView一樣的UI元素。

在XAML中重新使用的命令方法是樣式。您可以爲您定義樣式TreeView,您可以在其中定義常用屬性,然後將其應用於任意數量的元素。

下面是一個例子,你如何定義樣式:

<Style x:Key="MyTreeStyle" 
     TargetType="{x:Type TreeView}"> 
    <Setter Property="Background" 
      Value="Red"/> 
    <!-- Other property setters go here --> 
</Style> 

這裏是你如何運用它:

<TreeView Style="{StaticResource MyTreeStyle}" ItemsSource="{Binding Path=ClientData}"/> 
<TreeView Style="{StaticResource MyTreeStyle}" ItemsSource="{Binding Path=CustomerData}"/> 
+0

感謝@Pavlo Glazkov。我的TreeView包含一個有Grid的ListView。我可以使用DynamicResource grid 然後在我需要的兩個TreeView中使用它。它減少了重複代碼的數量,但沒有我希望的那麼多。 – JLWarlow 2011-02-08 10:02:48

相關問題