我有一个WPF子菜单,我想在我的XAML中的几个地方重用。它是八个<MenuItem>
元素的集合,带有一些复杂的绑定,我不想复制/粘贴。但是,持有人在每种情况下都不同:在一个地方,父级是<Menu>
,在另一个地方,父级是<MenuItem>
中的<ContextMenu>
。
我一直在<Setter Property="Items">
尝试<Style>
,但我想我可能走错了路。
为了使其具体化,我正在尝试减少代码重复,如下所示:
<Menu>
<MenuItem Header="Details" IsCheckable="True" ... />
<MenuItem Header="List" IsCheckable="True" ... />
<MenuItem Header="Thumbnails" IsCheckable="True" ... />
...
</Menu>
...
<ContextMenu>
<MenuItem Header="View">
<MenuItem Header="Details" IsCheckable="True" ... />
<MenuItem Header="List" IsCheckable="True" ... />
<MenuItem Header="Thumbnails" IsCheckable="True" ... />
...
</MenuItem>
</ContextMenu>
答案 0 :(得分:2)
这样的事情怎么样:
您需要在资源字典中创建以下集合:
<Collections:ArrayList x:Key="MenuItems" x:Shared="false">
<MenuItem Header="Details" />
<MenuItem Header="List" />
<MenuItem Header="Thumbnails" />
</Collections:ArrayList>
您需要添加以下命名空间:
xmlns:Collections="clr-namespace:System.Collections;assembly=mscorlib"
...
然后只使用该集合:
<Menu ItemsSource="{StaticResource MenuItems}" />
...
<ContextMenu>
<MenuItem Header="View" ItemsSource="{StaticResource MenuItems}" />
</ContextMenu>