/ / Kontextové menu pre XAML Treeviewitem (rozlišované rôznymi atribútmi) - wpf, xaml, contextmenu, treeviewitem

Kontextové menu pre XAML Treeviewitem (rozlišované rôznymi atribútmi) - wpf, xaml, contextmenu, treeviewitem

V XAML, ako definujete kontextovú ponuku stromov, ktoré sa odlišujú rôznymi atribútmi?

odpovede:

29 pre odpoveď č. 1

XAML

<TreeView Name="SolutionTree"  BorderThickness="0" SelectedItemChanged="SolutionTree_SelectedItemChanged"  >
<TreeView.Resources>
<ContextMenu x:Key ="SolutionContext"  StaysOpen="true">
<MenuItem Header="Add..." Click="AddFilesToFolder_Click"/>
<MenuItem Header="Rename"/>
</ContextMenu>
<ContextMenu x:Key="FolderContext"  StaysOpen="true">
<MenuItem Header="Add..." Click="AddFilesToFolder_Click"/>
<MenuItem Header="Rename"/>
<MenuItem Header="Remove"/>
<Separator/>
<MenuItem Header="Copy"/>
<MenuItem Header="Cut"/>
<MenuItem Header="Paste"/>
<MenuItem Header="Move"/>
</ContextMenu>
</TreeView.Resources>
</TreeView>

C-ostrý

private void SolutionTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
TreeViewItem SelectedItem = SolutionTree.SelectedItem as TreeViewItem;
switch (SelectedItem.Tag.ToString())
{
case "Solution":
SolutionTree.ContextMenu = SolutionTree.Resources["SolutionContext"] as System.Windows.Controls.ContextMenu;
break;
case "Folder":
SolutionTree.ContextMenu = SolutionTree.Resources["FolderContext"] as System.Windows.Controls.ContextMenu;
break;
}
}

14 pre odpoveď č. 2

Môžete definovať ContextMenus v niekoľkých štýloch a vyberte štýl pomocou a ItemContainerStyleSelector, založené na týchto atribútoch.

Alebo môžete priamo zadať ItemContainerStyle a vyberte príslušné ContextMenu pomocou spúšťačov


13 pre odpoveď č. 3
<TreeView>
<TreeView.Resources>
<ContextMenu x:Key="ScaleCollectionPopup">
<MenuItem Header="New Scale..."/>
</ContextMenu>
<ContextMenu x:Key="ScaleItemPopup">
<MenuItem Header="Remove Scale"/>
</ContextMenu>
</TreeView.Resources>
<TreeViewItem Header="Scales" ItemsSource="{Binding Scales}" ContextMenu="{StaticResource ScaleCollectionPopup}">
<TreeViewItem.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource ScaleItemPopup}"/>
</Style>
</TreeViewItem.ItemContainerStyle>
</TreeViewItem>
</TreeView>