我有几个项目控件,我需要为其附加一个事件处理程序
PreviewMouseLeftButtonDown 仅在满足特定条件时发生。
我用数据触发器为我的控件设计了一种样式,我检查了它的绑定并用常规财产设置者对于 BorderThickness 属性只是为了查看数据触发器是否有效
。 (确实如此..)
当满足数据触发器的条件时,如何使用事件设置器以与常规属性设置器相同的方式应用数据触发器来附加事件处理程序?
类似于:
<Style TargetType="{x:Type ItemsControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Turn}" Value="True">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ItemsControl_MouseLeftButtonDown"></EventSetter>
</DataTrigger>
</Style.Triggers>
</Style>
此标记在事件设置器行上引发以下异常:
'Set property 'System.Windows.EventSetter.Event' threw an exception.'
内部异常:
{"Value cannot be null.\r\nParameter name: value"}
不幸的是根据MSDN doc http://msdn.microsoft.com/en-us/library/system.windows.eventsetter.aspx备注下:
注意仅 Style.Setter 支持 EventSetter对象。触发器
(TriggerBase 和派生类)do not支持事件设置者
在这种情况下,DataTrigger 派生自 TriggerBase,因此您不能使用它来动态设置事件处理程序。我现在能想到的解决方法可能是根据 的值动态切换样式Turn
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)