2011-12-16 18 views
3

私はWPFで全く新しいです。最初のコードスニペットがうまく動作する理由(マウスを重ねると色が変わるとき)がうまくいくが、2つ目のコードスニペットがうまくいかない理由は混乱している。マウスオーバー時に楕円の色を変更します

<Ellipse Height="50" Width="50" Opacity="0.5" Stroke="Black" > 
<Ellipse.Style> 
    <Style TargetType="{x:Type Ellipse}"> 
     <Setter Property="Fill" Value="Blue" /> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Fill" Value="Green"> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Ellipse.Style> 

//

<Ellipse Height="50" Width="50" Fill="Blue" Opacity="0.5" Stroke="Black" > 
<Ellipse.Style> 
    <Style TargetType="{x:Type Ellipse}"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Fill" Value="Green"> 
       </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Ellipse.Style> 

感謝。

答えて

0

違いはラインControlTemplatesにもっと読む

<Setter Property="Fill" Value="Blue" /> 

です。

http://msdn.microsoft.com/en-us/library/ms743230.aspx

+0

誰がこれを控除しましたか?コメントをつけてdownvoteしてください。この質問に答えた人は、これを答えとしてマークしています。 –

+1

私はこれをdownvoteしませんでしたが、推論はおそらく:1)あなたは問題がどこにあるのかを示しましたが、問題を説明していない、2)問題は実際には 'はスタイルで設定したものを上書きします。これは[Kishore Kumarのリンク]でよく説明されています(http://stackoverflow.com/questions/7126308/wpf-trigger-wont-set-property-if -set-in-element)を使用します。問題は[Dependency Property Setting Precedence](http://msdn.microsoft.com/en-us/library/ms743230.aspx#listing)です。ここで、#3ローカル値は#6スタイルトリガーをオーバーライドします。この例では、コントロールテンプレートは使用していません。 – cod3monk3y

5

この純粋なため、プロパティ値の優先順位の。以下のリンクは優れた説明を得ました。

WPF Trigger won't set property if set in Element

+0

もちろんそれは解決策でしたが、私は同じ疑念が私の心の中にあるときにあなたに参照を与えました。 –

関連する問題