gpt4 book ai didi

c# - 如何以编程方式将属性为 "Template"的 Setter 添加到 C#/WPF 中的触发器?

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:08 25 4
gpt4 key购买 nike

尝试以编程方式将触发器添加到样式。我希望 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);

我想以编程方式执行此操作的原因是我的系统在指定 mousevents 和 touchevents 之间时遇到问题。我找到了一种以编程方式确定输入设备的方法,具体取决于应添加或不存在该触发器的情况。如果在有 touchevent 时触发器存在,它不会将其注册为鼠标单击,而只是鼠标悬停。

最佳答案

首先,要在代码中设置 Template 属性,请使用

setter.Property = Control.TemplateProperty;

其次,要访问资源,请尝试

setter.Value = FindResource("HoverPatientFull") as /*Whatever data type the resource is*/;

关于c# - 如何以编程方式将属性为 "Template"的 Setter 添加到 C#/WPF 中的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com