繁体   English   中英

如何通过 XAML 中的样式重用子项?

[英]How do I reuse item children via a style in XAML?

我有一个 WPF 子菜单,我想在 XAML 的几个地方重用它。 它是八个<MenuItem>元素的集合,其中包含一些我不想复制/粘贴的复杂绑定。 但是,每种情况下的持有者都不同:在一个地方,父项是<Menu> ,在另一个地方,父项是<ContextMenu><MenuItem> <ContextMenu>

我一直在我的<Style>尝试使用<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>

这样的事情怎么样:

您需要在资源字典中创建以下集合:

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM