Я хочу добавить некоторые графические элементы во время выполнения в моем объекте моего приложения WPF. Моя цель состоит в том, чтобы добавить круг вокруг моей кнопки (только кодовым кодом во время выполнения) и добавить триггер в мой контрольный шаблон.Модифицировать стиль (добавить триггер) динамически во время выполнения
Все хорошо, мой круг вокруг моей кнопки показывает вверх, но моя проблема: я не могу создать любой триггер, он говорит:
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, новый будет запечатан.
Мой код позади, чтобы создать свой триггер:
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
Любой комментарий будет полезен ... спасибо – mlemay