如何使用x:Reference动态生成MenuItems?

时间:2012-02-22 06:08:13

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

我有一个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静态资源时,我没有在更简单的情况下遇到此问题。

1 个答案:

答案 0 :(得分:0)

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