2012-01-31 17 views
2

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 
+0

すべてのコメントは役に立ちます...ありがとう – mlemay

答えて

0

はそれを見つけました。 私のボタンではなく、新しいコンテナ(グリッド)に私のトリガを作成するだけです。 シンプル。

関連する問題