我有一個MenuItem在上下文菜單中,我想使用ItemSource爲列表中的每個項目生成子MenuItems。每個這些生成的項目都應該有子菜單項Active(可選),Edit和Delete。WPF XAML - 帶ItemSource和子菜單項的MenuItem
Custom Messages
-Custom Message 1
-Active
-Edit
-Delete
-Custom Message 2
-Active
-Edit
-Delete
-Custom Message 3
-Active
-Edit
-Delete
下面的XAML部分作品:
<MenuItem Header="Custom Messages" Visibility="{Binding Path=HasCustomMessages, Converter={StaticResource BVC}}" ItemsSource="{Binding Path=CustomMessages}" DisplayMemberPath="Description">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="ItemsSource">
<Setter.Value>
<x:Array Type="FrameworkElement">
<MenuItem Header="Active" IsCheckable="True" IsChecked="{Binding Path=Active}"></MenuItem>
<Separator></Separator>
<MenuItem Header="Edit" Name="EditCustomMessageButton" Click="EditCustomMessageButton_Click" Style="{x:Null}"></MenuItem>
<MenuItem Header="Delete" Name="DeleteCustomMessageButton" Click="DeleteCustomMessageButton_Click" Style="{x:Null}"></MenuItem>
</x:Array>
</Setter.Value>
</Setter>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Add Custom Message" Name="AddCustomMessageButtton" Click="AddCustomMessageButtton_Click"></MenuItem>
<Separator></Separator>
<MenuItem Header="Delete" Name="DeleteButton" Click="DeleteButton_Click"></MenuItem>
但是這裏有兩個問題:
通過在Edit和Delete上設置ItemSource =「{x:Null}」解決了上述問題,但事件表現得很直白。單擊刪除不執行任何操作,單擊編輯觸發編輯按鈕單擊事件,然後是刪除按鈕單擊事件,然後單擊添加按鈕單擊事件(甚至不是其他兩個的兄弟)。
是否有可能讓每個包含Click事件的ICommand屬性的menuItem都有一個VM? – tgpdyk