[英]How do I programmatically add a Setter with the Property “Template” to a Trigger in C#/WPF?
尝试以编程方式将“触发器”添加到“样式”。 我希望Trigger Setter的属性为“Template”。 我也希望Setter Value成为DynamicResource-
这是我的.xaml看起来像,我想以编程方式添加触发器:
<Style x:Key="ContentStyle" TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter
Property="Template"
Value="{DynamicResource HoverStyle1}" />
</Trigger>
</Style.Triggers>
</Style>
这是我到目前为止在C#中没有编译的,即setter.Propery和setter.Value行:
Style myStyle = null;
myStyle = listboxPatientList.TryFindResource("ContentStyle") as Style;
Setter setter = new Setter();
setter.Property = UIElement.Template;
setter.Value = {DynamicResource HoverPatientFull};
Trigger trigger = new Trigger();
trigger.Property = UIElement.IsMouseOverProperty;
trigger.Value = true;
trigger.Setters.Add(setter);
myStyle.Triggers.Add(trigger);
我想以编程方式执行此操作的原因是因为我的系统在mouseevents和touchevents之间进行指定时遇到问题。 我已经找到了一种以编程方式确定输入设备的方法,具体取决于这种情况,应该添加或不存在此触发器。 如果存在触发器时触发器存在,则不会将其注册为鼠标点击,只是鼠标悬停。
首先,要在代码中设置Template
属性,请使用
setter.Property = Control.TemplateProperty;
其次,要访问资源,请尝试
setter.Value = FindResource("HoverPatientFull") as /*Whatever data type the resource is*/;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.