所以我的Windows应用程序中有一堆WPF Windows。 我希望每个窗口都有一个包含一个项目的上下文菜单(参见下面的代码)。但是,我不想在任何地方复制和粘贴此代码。我想以某种方式扩展WPF Window类(并称之为PrintableWindow)并以某种方式使每个窗口成为PrintableWindow的扩展....这可能吗?
<Window.ContextMenu>
<ContextMenu>
<ContextMenu.Items>
<MenuItem Header="Print"
Click="mnuPrint_Click">
</MenuItem>
</ContextMenu.Items>
</ContextMenu>
</Window.ContextMenu>
答案 0 :(得分:1)
您不需要扩展窗口来完成此操作,只需为所有窗口创建一个全局样式。
在app.xaml文件中:
<Style TargetType="{x:Type Window}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<ContextMenu.Items>
<MenuItem Header="Print" Command="Print" />
</ContextMenu.Items>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
如果要从特定窗口打印,则必须在窗口中为print命令创建处理程序。更好的是,如果您使用的是视图模型,则可以绑定到您的命令。
答案 1 :(得分:0)
创建自己的Window
类,名为PrintableWindow
,派生自。{
Window
然后修改任何其他Window
个实例,以便从PrintableWindow
与Window
派生。这样,所有Window
个实例都属于PrintableWindow
类型,其中包含ContextMenu
和与之关联的处理程序。