2011-09-14 3 views
1

まず、私はWPFで約1週間作業していたと言いましょう。私はTextBoxを無効にすると、それがクリアされるようにTextBoxのスタイルを設定したいと思います。 Thisの記事で説明しましたが、一般的なスタイルをリソースとして設定する方法が混乱し、各TextBoxのスタイルを繰り返さずにすべてのTextBoxを別のプロパティにバインドできます。スタイルを使用してテキストをクリアするTextBoxトリガー

<Window.Resources> 
     <Style TargetType="{x:Type TextBox}" x:Key="style1"> 
      <Setter Property="Text" Value="{What do I really put here?}" /> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Text" Value="{x:Null}" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 

....

<TextBox Style="{StaticResource style1}" Text="{Binding SomeProperty}"/> 

ありがとう!

答えて

2

このようなTextプロパティを使用することはできません。そのスタイルを持つTextBoxTextプロパティを明示的に設定すると、気づいたようにトリガーのTextセッターが上書きされます。

あなただけTextBoxがクリアされると、それが結合されたプロパティは、その回避策は、あなたがStyle中にTextを結合したテキストの添付プロパティ(またはTag)を使用することではありません必要がある場合。その後
例..

<Style TargetType="{x:Type TextBox}" x:Key="style1"> 
    <Setter Property="Text" Value="{Binding RelativeSource={RelativeSource Self}, 
              Path=Tag}"/> 
    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Text" Value="{x:Null}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

TextBoxこのStyle

<TextBox Style="{StaticResource style1}" Tag="{Binding SomeProperty}" /> 

などを使用することができます