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