서로 다른 (그러나 대부분 비슷한 데이터를 포함하는) 트리 뷰 컨트롤이 세 개 있습니다. 결과적으로 각 수준에서 취할 수있는 동작은 사용자가 염려하는 한 동일하지만, 그러나 그들의 타입이 다르다. (이것은 내가 개발자로서 걱정해야만하는 것이다.) 무엇을 할 것인가 은과 같이이 컨텍스트 메뉴를 재사용하고 유형을 전달 (또는 검색 할 수 있음) 한 다음 유형이 실제 실행 된 함수로 전달되도록합니다. 나는 크기, 브랜드의 각각에 대해, 그리고 색상과 동일한의 ContextMenu을 가지고 있지만 것,이 예에서WPF의 여러 컨트롤에 대해 ContextMenu 재사용
<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>
: 우리가 공통 verbage를가 할 수 있도록
는 여기에 몇 가지 코드입니다 컨텍스트 메뉴가 Size TreeView에서 끌어 올려지면 크기 테이블 그룹을 테이블에 추가해야합니다. 이 일이 가능한가요? 세 가지 ContextMenus를 만드는 것을 피하려고합니다. 분명히 이것을 할 수있는 방법 일 것입니다.
그럴 필요가 있습니다. 어쨌든 일부 메소드에서는 요소에서 ID를 가져와야 할 것입니다. –