2009-09-17 49 views
2

我使用HierarchicalDataTemplate將我的分層數據添加到Menu-Control。將樣式添加到HierarchicalDataTemplate生成的MenuItems

<HierarchicalDataTemplate DataType="{x:Type local:MyType}" ItemsSource="{Binding Path=SubItems}"> 
    <StackPanel> 
     <TextBlock Text="{Binding Name}"/> 
    </StackPanel> 
</HierarchicalDataTemplate> 

我的菜單是這樣

<Menu> 
    <MenuItem ItemsSource="{Binding MyCollection}" Header="MainItem"></MenuItem> 
</Menu> 

創建如何才能添加樣式到這些生成的MenuItems設置IsCheckable屬性的例子。主菜單項(此處名爲「MainItem」的標題)不應用此樣式,因此它不可檢查,這一點很重要。

我試過幾種方法,使用<Style><DataTemplate但沒有成功。

回答

5

像這樣:

<Menu> 
    <Menu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      .... 
     </Style> 
    </Menu.ItemContainerStyle> 
</Menu> 

或者在您的情況:

<Menu> 
    <MenuItem Header="Text" ItemsSource="{Binding Data}" ItemContainerStyle="{SomeStyle}"/> 
</Menu> 
+0

它適用於所有的MenuItems,而不是隻對子項目。 我想通過HierarchicalDataTemplate將菜單設置爲MenuItems'創建',而不是菜單中的所有項目。 – apparat 2009-09-17 15:26:56

+0

答覆已更新。 HTH。 – gimalay 2009-09-17 15:44:03

+0

就像你說的那樣,它在ItemContainerStyle中使用StaticResource處理我的樣式。謝謝 – apparat 2009-09-18 09:03:12