WPF数据绑定:不要覆盖预先填充的值

时间:2011-07-18 15:09:24

标签: wpf data-binding

我有一个MenuItem,我想用子项填充。但是,我希望它能保留已有的物品:

<MenuItem Header="_Profiles">
    <MenuItem Header="_New Profile..." />
    <Separator />
    <!-- Databind here! -->
</MenuItem>

然而,当我尝试使用普通的声明性数据绑定时,它消除了我声明的两个子项。

我确信必须有办法做到这一点,但我无法弄清楚,我不确定我的任何谷歌搜索都是那么好;有人可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

一种方法是使用CompositeCollection

<MenuItem Header="_File">
    <MenuItem.ItemsSource>
        <CompositeCollection>
            <MenuItem Header="_New" />
            <Separator />
            <CollectionContainer Collection="{Binding MenuItems}" />
            <Separator />
            <MenuItem Header="E_xit" />
        </CompositeCollection>
    </MenuItem.ItemsSource>
</MenuItem>

答案 1 :(得分:1)

它将在MenuItem上绑定集合中的所有项目,因此在加载/修改集合后将项目保留在那里的唯一方法是确保这些静态菜单项保留在集合中。

执行此操作的一种方法是保留两个ItemCollections,一个静态值和一个动态值。绑定到动态值。然后在显示菜单之前,合并集合。这样您就不必经常确保将静态值作为绑定集合的前两个元素。