gpt4 book ai didi

c# - 在运行时动态修改样式(添加触发器)

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

我想在运行时在我的 WPF 应用程序对象中添加一些图形项。我的目标是在我的按钮周围添加一个圆圈(仅在运行时通过代码隐藏)并向我的 ControlTemplate 添加一个触发器。

一切都很好,我的按钮周围出现了圆圈,但我的问题是:我无法创建任何触发器,它说:

After a 'TriggerCollection' is in use (sealed), it cannot be modified.

我的理解是当样式被其他东西渲染或使用时我不能修改它。我试图复制样式来修改新样式,但无法访问触发器。

我的对象是这样的:

<Style x:Key="Button_1" TargetType="{x:Type MyDLL:MyObject}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MyDLL:MyObject}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="190" Height="140">
....
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Property1" Value="True">
<Setter.../>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

如果我将样式复制到新样式,如何将触发器添加到 ControlTemplate 中?

如果我将我的 ControlTemplate 复制到一个新的 ControlTemplate,新的也会被密封。

我创建触发器的代码是:

Trigger trigger = new Trigger { Property = DragModeProperty, Value = false };
Setter setter = new Setter { Property = VisibilityProperty, Value = Visibility.Collapsed, TargetName = "DRAG" };
trigger.Setters.Add(setter);
Template.Triggers.Add(trigger); // THIS ONE CAUSE THE ERROR

最佳答案

找到了。我只是在新容器 (Grid) 而不是在我的按钮上创建触发器。简单。

关于c# - 在运行时动态修改样式(添加触发器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9084493/

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