因此,我有一个自定义类,该类继承自WPF日历日历,该类使用一些爵士乐修改了默认模板,以在某些日期添加突出显示,并且到目前为止效果很好。
现在,我还要向每个dateitem按钮(类型为CalendarDayButton)添加一个上下文菜单。我可以打开一个工作上下文菜单,但是当我尝试添加click事件时,它似乎根本没有触发。
快速的流程概要:
我有一个HighlightCalendar.vb文件,该文件定义了我的控件文件夹中的类。
使用复制和修改后的xaml模板设置样式,该模板位于我的主题文件夹中,文件名HighlightCalendar.xaml
主题文件夹中也有一个HighlightCalendar.xaml.vb文件。它定义为Partial Public Class HighlightResources,并且我的模板xaml的标头具有声明的x:Class = HighlightResources。
使用此设置,Visual Studio允许我在“属性/事件”选项卡中为上下文菜单的click事件定义方法名称,并自动在我的HighlightCalendar.xaml.vb中创建具有正确标题的子项。 >
但是,当我单击上下文菜单项时,永远不会调用该子控件。我将其设置为一个简单的MessageBox.Show(“ Test”),什么也没有发生。在子节点上设置断点,永远不会触发。请让我知道我想念的东西。谢谢。
代码段:
HighlightCalendar.xaml.vb(模板代码位于后面)
Partial Public Class HighlightResources
Inherits ResourceDictionary
Private Sub dayClick(sender As Object, e As RoutedEventArgs)
MessageBox.Show("test")
End Sub
End Class
HighlightCalendar.xaml(模板)
标题:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WinSurvWPF"
x:Class="HighlightResources">
样式代码:
<Style x:Key="HighlightCalendarDayButtonStyle"
TargetType="{x:Type CalendarDayButton}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="test"
Click="dayClick"/>
</ContextMenu>
</Setter.Value>
</Setter>
答案 0 :(得分:1)
这是一个与在setter中定义上下文菜单有关的错误。如果将上下文菜单定义为单独的资源,然后在设置器中引用它,则它将正常工作。
有关更多详细信息,请参见此链接:Why "Setting event handlers inside a Setter.Value structure" gives compilation error?
感谢Bijan为我提供了帮助。