2013-08-16 24 views
1

我有一個WPF窗口上的對象列表,所有對象都有一個上下文菜單,允許用戶將項目複製或移動到不同的面板中(所以上下文菜單的ItemsSource是該列表的面板,以及「複製」和「移動」是子菜單項)。但是,我在對象中定義了一個「CanCopy」屬性,用於確定是否可以實際複製對象。如何根據此屬性的值顯示/隱藏此MenuItem?我的問題似乎是在定義這個變量附加級別的MenuItems。在MenuItem ItemTemplate中定義另一個級別的菜單項

一開始我嘗試這樣的事情,但顯然它不完全是我要找的,因爲這雙打的PanelName菜單項中兩個菜單項的容器:

<MenuItem Header="Panels..." ItemsSource="{Binding PanelsList}"> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding PanelName}"> 
       <MenuItem Header="Copy" Visibility="{Binding CanCopy,Converter={StaticResource BoolToHiddenConverter}}"/> 
       <MenuItem Header="Move"/> 
      </MenuItem> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 

建議?

回答

0

添加爲內容不ItemTemplate中

<MenuItem Header="Panels..." ItemsSource="{Binding PanelsList}"> 
    <MenuItem Header="{Binding PanelName}"> 
     <MenuItem Header="Copy" Visibility="{Binding CanCopy,Converter={StaticResource BoolToHiddenConverter}}"/> 
     <MenuItem Header="Move"/> 
    </MenuItem> 
</MenuItem> 
+0

謝謝!我沒有意識到你可以定義像這樣的項目模板...去顯示我是多少WPF初學者:) –

+0

不是問題:) –

+0

剛剛有機會嘗試了這一點,而這實際上不是一個'工作(糟糕,本來應該先試試這個)。我收到「使用ItemsSource之前項目集合必須爲空」消息。還有其他建議嗎? –

相關問題