我用样式创建了我的日历:
<Style x:Key="CalendarDayButtonStyle" TargetType="CalendarDayButton">
<Setter Property="Background" Value="{StaticResource Brush.Foreground.TextBlock.LightBlue}" />
<Setter Property="MinWidth" Value="5" />
<Setter Property="MinHeight" Value="5" />
<Setter Property="FontSize" Value="12" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Template">
...
<EventSetter Event="MouseDoubleClick" Handler="{Binding DayButtonCommand}"/>
</Style>
我想通过MouseDoubleClick事件执行命令。
但是在应用程序启动时发生异常: “PresentationFramework.dll中发生了'System.Windows.Markup.XamlParseException'类型的未处理异常
附加信息:BaseUri只能在根节点设置一次(XamlXmlReader可能在根节点提供默认值)。“
我在资源文件中创建此样式并使用MVVM。
如何将MouseDoubleClick事件与此StyleDayButton样式绑定?
感谢。
答案 0 :(得分:0)
您不应该使用样式,而是在触发Double Click事件时使用附加行为触发命令。 MVVM light has such a feature
XAML看起来像这样:
<CalendarDayButton ...>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<command:EventToCommand
Command="{Binding Main.NavigateToArticleCommand,
Mode=OneWay,
Source={StaticResource Locator}}"
CommandParameter="{Binding Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</CalendarDayButton>
编辑:您还可以在View中的Calendar对象上使用Routed EventHandler,并从视图的代码隐藏中调用ViewModel命令。 Example