【问题标题】:How to dynamically generate MenuItems using x:Reference?如何使用 x:Reference 动态生成 MenuItems?
【发布时间】:2012-02-22 06:08:12
【问题描述】:

我有一个 MenuItem,它的 ItemsSource 设置为以下 CompositeCollection:

<CompositeCollection>
    <MenuItem x:Name="SpinnerMenuItem" Header="Waiting..."/>
    <CollectionContainer 
        Collection="{Binding DataContext.Source, 
                     Source={x:Reference SpinnerMenuItem}, 
                     Converter={StaticResource NoOpConverter}}"/>
</CompositeCollection>

NoOpConverter 中的断点告诉我我的集合已成功绑定到 CollectionContainer。问题是,菜单显示完全是空的!我得到的只是一个大约 3 像素高和 10 像素宽的弹出窗口。

为什么我的菜单项没有显示?一旦绑定列表被填充,甚至“SpinnerMenuItem”也会消失。在更简单的情况下,当我只是绑定到 CollectionViewSource 静态资源时,我没有遇到这个问题。

【问题讨论】:

    标签: c# wpf binding .net-4.0 contextmenu


    【解决方案1】:

    这似乎是 CompositeCollection 的问题。解决方法是使用 StaticResource 而不是 Binding 或类似的。更多信息在这里:Why is CompositeCollection not Freezable?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2017-11-26
      • 2015-12-09
      • 2012-06-11
      相关资源
      最近更新 更多