【问题标题】:Apply MenuItem.ItemContainerStyle without a Parent MenuItem应用没有父 MenuItem 的 MenuItem.ItemContainerStyle
【发布时间】:2014-08-12 15:20:11
【问题描述】:

我有以下 XAML 可以正常工作,因为它会为每个最近的文件生成一个最近的文件菜单项和一个子菜单项:

<MenuItem Header="Recent Files" ItemsSource="{Binding RecentFiles}">
    <MenuItem.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="Command" Value="{Binding Open}" />
            <Setter Property="Header" Value="{Binding Name}" />
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>

这是在文件菜单中,并产生类似这样的菜单结构:

File
  New
  Open
  Save
  Save As
  --
  Recent Files
    File 1
    File 2
    File 3

希望你能明白……但我真的不希望最近文件的父菜单项,我希望最近的文件位于文件菜单的末尾,更像这样:

File
  New
  Open
  Save
  Save As
  --
  File 1
  File 2
  File 3

我怎样才能做到这一点?我是否可以在 MenuItem.ItemContainerStyle 周围放置一个“虚拟”容器元素,而不是最近的文件 MenuItem,或者我应该以完全不同的方式这样做吗?

谢谢

斯图尔特

【问题讨论】:

  • 据我了解,仅添加静态菜单项是无法做到这一点的,因为 ItemsSource 只能在 MenuItem 集合为空时使用。我会考虑使用 DataTriggers 应用 DataTemplate 以生成菜单项。
  • 抱歉 - 当你说“不能这样做”时,我不确定你在说什么......你是说我不能做我想做的事还是我给的 sn-p一开始就不会工作 - 就像它一样?还没有为 MenuItems 尝试过 DataTemplate...

标签: wpf xaml menuitem itemcontainerstyle


【解决方案1】:

也许你可以使用CompositeCollection 类来实现你想要的,你需要添加一个CollectionViewSource 来将RecentFiles 暴露给CollectionContainer

<Menu>
    <Menu.Resources>
        <CollectionViewSource x:Key="RecentFilesCvs" Source="{Binding RecentFiles}" />
    </Menu.Resources>
    <MenuItem Header="File">
        <MenuItem.ItemsSource>
            <CompositeCollection>
                <MenuItem Header="New"/>
                <MenuItem Header="Open"/>
                <MenuItem Header="Save"/>
                <MenuItem Header="Save As"/>
                <Separator/>
                <CollectionContainer Collection="{Binding Source={StaticResource RecentFilesCvs}"/>
            </CompositeCollection>
        </MenuItem.ItemsSource>
    </MenuItem>
</Menu>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2014-08-20
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    相关资源
    最近更新 更多