2011-10-03 58 views
0

我有一個要求顯示上下文菜單中的項目列表。除此之外,我需要在頂部顯示經常使用的項目(可由用戶配置),然後顯示分隔符,然後顯示所有項目的標準列表。我知道,我可以在運行時將所有項目添加到上下文菜單,但我也想要探索不同的選項。問題是:是否有可能:在運行時將項目添加到數據綁定上下文菜單

  1. 綁定xaml中的標準列表,然後在運行時添加常用項目。 或
  2. 綁定上下文菜單兩個單獨的列表 或
  3. 任何其他更好的選擇

請注意,我要維護兩個單獨的列表,由於一些技術原因。 我沒有顯示任何現有的代碼,因爲這個問題可能被認爲是一個通用的問題,可能適用於任何控制。

+0

如何兩個菜單,每個綁定到單獨的列表,並在這兩個列表之間的自定義HTML分離器? – mellamokb

+0

你是指兩個菜單,然後是包含標準列表和頻繁列表的子菜單?技術上可行但用戶可能不喜歡這樣。此應用程序旨在提高聯絡中心的性能。我必須將點擊次數和/或導航次數降至最低。 – Nishant

回答

0

第二個選項是可行的使用CompositeCollection,但是結合能力都有點dimished在CollectionContainer.Collection - 結合(不能用DataContextElementNameRelativeSource)。

This answer我的另一個問題顯示了你可以綁定的兩種方法。如果您無法完成這些限制,您將不得不在代碼隱藏中創建複合集合。

0

我會在ViewModels中管理我的菜單,而不是在XAML中。我的ViewModel將負責返回一個集合了標準菜單集合和自定義UserCollection的集合。

通常我用null值分隔項目,如果項目爲null,則使用DataTrigger將模板繪製爲分隔符。

事情是這樣的:

myMenu.AddRange(UserMenu); 
myMenu.Add(null); 
myMenu.AddRange(StandardMenu); 

和XAML ...

<ContextMenu ItemsSource="{Binding MyMenu}"> 
    <ContextMenu.Resources> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="Template" 
        Value="{StaticResource MyMenuItemTemplate}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding }" Value="{x:Null}"> 
        <Setter Property="Template" 
          Value="{StaticResource MySeparatorTemplate}" /> 
       </DataTrigger> 
      </Style.Resources> 
     </Style> 
    </ContextMenu.Resources> 
</ContextMenu> 
相關問題