在resourceDictionary.xaml文件中分配ContextMenu Item Click事件

时间:2013-09-15 22:51:39

标签: c# wpf xaml resourcedictionary

我想知道是否可以将项目点击事件分配给此上下文菜单,它将其放置在ResourceDictionary类型的.Xaml文件中,其中一个没有代码隐藏在类之后,但我知道我可以手动为此.xaml分配.cs类。

但是我不想为它分配一个文件类,因为我已经有了另一个.Xaml文件,它有自己的.cs文件类,我想在其中注册itemClick事件。

我在resourcedictionary文件中的代码是:

<ContextMenu>
<MenuItem Header="Show SoundRecorder" Click="ItemClick"></MenuItem>
<Separator/>
<MenuItem Header="Start Recording Now"></MenuItem>
<MenuItem Header="Stop Recording"></MenuItem>
<Separator/> 
<MenuItem Header="About"></MenuItem>
<MenuItem Header="Exit SoundRecorder"></MenuItem>
</ContextMenu>

我怎样才能实现这种方法?

1 个答案:

答案 0 :(得分:2)

使用上下文菜单在视图的数据上下文中创建命令。

public ICommand ItemClickCommand{ get; set; }

然后,您可以将MenuItem的Command属性绑定到新命令。

<ContextMenu>
<MenuItem Header="Show SoundRecorder" Command="{Binding ItemClickCommand}"></MenuItem>
<Separator/>
<MenuItem Header="Start Recording Now"></MenuItem>
<MenuItem Header="Stop Recording"></MenuItem>
<Separator/> 
<MenuItem Header="About"></MenuItem>
<MenuItem Header="Exit SoundRecorder"></MenuItem>
</ContextMenu>

在运行时,如果WPF在数据上下文中找到该命令,它将把菜单项绑定到它。否则,它将在输出控制台中发出警告。

我不会在这里实现ICommand接口。有很多googlable实现。