У меня есть три элемента управления в виде дерева, которые содержат разные (но в основном схожие данные), в результате действия, которые могут быть выполнены на каждом уровне, одинаковы для пользователя, но различаются по своему типу ( что-то, о чем я должен беспокоиться как разработчик). хотелось бы сделать, это повторно использовать это контекстное меню и передать ему тип (или иметь возможность получить его), а затем тип был бы передан действительной исполняемой функции.
Чтобы у нас была общая гадость, вот код:
<UserControl x:Class="ucControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LocalNamespace"
Name="ucControl"
xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit"
Background="LightGray">
<UserControl.Resources>
<ContextMenu x:Key="GroupMenu">
<MenuItem Header="Add Group" Command="New"/>
<MenuItem Header="Rename Group" Command="local:CustomCommands.RenameGroup"/>
<MenuItem Header="Delete Group" Command="Delete"/>
<Separator/>
<MenuItem Header="Change Contents of Group" Command="local:CustomCommands.EditGroupContents"/>
</ContextMenu>
</UserControl.Resources>
<UserControl.CommandBindings>
<CommandBinding CanExecute="CanAddGroup" Command="New" Executed="AddGroup"/>
<CommandBinding Command="local:CustomCommands.RenameGroup" CanExecute="CanRename" Executed="RenameGroup"/>
<CommandBinding Command="local:CustomCommands.EditGroupContents" CanExecute="CanEditGroupContents" Executed="EditGroupContents"/>
</UserControl.CommandBindings>
<TabControl Name="tcTabs">
<TabItem Header="Size" Name="tiSize">
<TreeView Name="tvSizeGroup" ContextMenu="{StaticResource GroupMenu}"/>
</TabItem>
<TabItem Header="Brand" Name="tiBrand">
<TreeView Name="tvBrandGroup" ContextMenu="{StaticResource GroupMenu}"/>
</TabItem>
<TabItem Header="Color" Name="tiColor">
<TreeView Name="tvColorGroup" ContextMenu="{StaticResource GroupMenu}"/>
</TabItem>
</TabControl>
В этом примере я хотел бы, чтобы у каждого из Size, Brand и Color было одно и то же ContextMenu, но если контекстное меню открывается в Size TreeView, мне нужно добавить группу типа Size в мой Таблица. Это возможно, как я это делаю? Я пытаюсь избежать создания трех ContextMenus, что, очевидно, было бы способом сделать это.