尝试以编程方式将“触发器”添加到“样式”。我希望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之间进行指定。我已经找到了一种以编程方式确定输入设备的方法,具体取决于这种情况,应该添加或不存在此触发器。如果存在触发器时触发器存在,则不会将其注册为鼠标点击,只是鼠标悬停。
答案 0 :(得分:3)
首先,要在代码中设置Template
属性,请使用
setter.Property = Control.TemplateProperty;
其次,要访问资源,请尝试
setter.Value = FindResource("HoverPatientFull") as /*Whatever data type the resource is*/;