我想在我的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>
如果我将Style复制到新样式,如何将触发器添加到ControlTemplate中?
如果我将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
答案 0 :(得分:0)
找到它。 我只是在一个新容器(Grid)而不是我的Button上创建我的触发器。 简单。