繁体   English   中英

如何以编程方式将具有属性“模板”的Setter添加到C#/ WPF中的触发器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM