2014-11-05 57 views
0

如果这不是最好的解决方法,请随时提出一个替代方法来解决我的问题。我可以在XAML中设置ToolBar项目吗?

我有一个ToolBarTray和一个TreeView。该树有两个项目分别是Concrete1和Concrete2类。我希望工具栏具有不同的菜单,具体取决于树中选择哪种类型的项目。

<ToolBarTray DockPanel.Dock="Top"> 
    <ToolBar> 
     <ToolBar.Style> 
      <Style TargetType="{x:Type ToolBar}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=tree, Path=SelectedItem, Converter={StaticResource convert}}" Value="{x:Type root:Concrete1}"> 
         <!--what do i do here??--> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding ElementName=tree, Path=SelectedItem, Converter={StaticResource convert}}" Value="{x:Type root:Concrete2}"> 
         <!--what do i do here??--> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ToolBar.Style> 

     <ToolBar.Resources> 
      <Menu x:Key="awd"> 
       <MenuItem Header="AWD"></MenuItem> 
      </Menu> 
      <Menu x:Key="dwa"> 
       <MenuItem Header="DWA"></MenuItem> 
      </Menu> 
     </ToolBar.Resources> 
    </ToolBar> 
</ToolBarTray> 

<TreeView x:Name="tree" ItemsSource="{Binding Families}"></TreeView> 

我已经尽可能地设置任何常规属性(背景等)的工具栏,具体取决于选择哪个项目。我不知道如何继续添加特定的菜单到工具栏。

回答

0

我想我已经想通了。我只使用ContextMenu完成了这一工作,并且在风格触发器之外,但我想这将是相同的原理。

<TreeView> 
    <TreeView.ContextMenu> 
     <ContextMenu> 
      <StaticResourceExtension ResourceKey="myMenuItem"></StaticResourceExtension> 
     </ContextMenu> 
    </TreeView.ContextMenu> 
</TreeView> 
相关问题