2011-01-16 2 views
6

可能かどうかわかります。私はTextBoxからボーダーを削除し、マウスが上にあるときに私はそのデフォルトの枠線を戻したいと思う。プロパティをデフォルト値に戻すためにセッターを使用できますか?

<Style TargetType="TextBox"> 
     <Setter Property="BorderBrush" Value="{x:Null}"/> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="BorderBrush" Value="?????"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

私は私がそれを使用できると思っていたが、最後に境界線を非表示にする悪い考えのように思えたが、疑問は残ります。 (私はこのケースでは、マウスがTextBox上になければ、境界線のみを取り除くためにトリガーを元に戻すことができることを知っています)

+0

デフォルト値を定義します。基礎となる 'DependencyProperty'メタデータに割り当てられたデフォルト値を意味しますか? –

+0

私はそれを説明する言葉で推測します:もし私がその物件を決して設定しないなら、何が使われているのか。 –

+0

"このケースでは、マウスがTextBoxを超えていなければ、境界線のみを取り除くためにトリガーを元に戻すことができます。" –

答えて

5

実際にはそうではありません。 DependencyPropertyシステムは、さまざまな価値源を考慮して動作します。 hereのように、スタイル・セッターとスタイル・トリガーは別々のソースと見なされます。 (「依存関係プロパティの優先順位リスト」で、それぞれ8と6の番号が付けられています。)アクティブな値ソースのうち優先順位が最も高いものがどちらか優先します。

1種類のプロパティソースでは、別のソースから提供される値を削除できません。唯一の理由のトリガーは、設定者がそれを設定する値からトリガーの優先順位を高くすることから値を変更することができます。優先度の低いソースから提供された値を根絶する権限はありません。

ここで示した目標を達成する方法は、トリガー感覚を逆転させることです。スタイルセッターを定義しないで、IsMouseOverがfalseの場合にのみトリガーをアクティブにします。もちろん、それはあなたがこれをしたいかもしれないすべての可能なケースであなたを助けません。しかし、一般的な解決策がないので、それぞれの問題を独自の方法で解決する必要があると思います。

+0

これらの優先順位についてお知りになりたい場合は、お返事ありがとうございます。 –

関連する問題