2011-07-18 27 views
2

我有一個我想用子項填充的MenuItem。不過,我想讓它保持它已經擁有的項目:WPF數據綁定:不要覆蓋預先填充的值

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

然而,當我嘗試使用它消除了兩個分項目,我宣佈正常聲明式數據綁定。

我確定必須有一種方法可以做到這一點,但我無法弄清楚,我不確定我的任何Google搜索都很好;誰能幫忙?

謝謝!

回答

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> 
+0

這是完美的。我知道肯定有一些內置的方式。 – Rob

+0

不錯。我不知道你可以這樣做。不久之前,我可以節省一些時間。 – Josh

+0

@Rob和@Josh,當4.0框架出來時,我一定花了一個星期的時間才完成命名空間,但即使如此,我仍然幾乎每週都會發現新的類。 – user7116

1

它會綁定MenuItem中集合中的所有項目,因此在集合加載/修改後保留項目的唯一方法是確保靜態菜單項保留在集合中。

做到這一點的一種方法是保留兩個ItemCollections,一個靜態值和一個動態值。綁定到動態值。然後在顯示菜單之前,合併這些集合。這樣您就不必一直確保靜態值作爲綁定集合的前兩個元素。