2012-01-31 2 views
2

Я хочу добавить некоторые графические элементы во время выполнения в моем объекте моего приложения 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 
+0

Любой комментарий будет полезен ... спасибо – mlemay

ответ

0

Нашел. Я просто создаю триггер на новом контейнере (Grid), а не на моей Button. Простой.

Смежные вопросы