2012-04-30 16 views
4

TextBoxのカスタムサブクラスを作成しています。スタイルの基本部分のみを変更する必要があります。あなたがControlのサブクラスを作成するとき今、私たちは、これは、それはもはや取得を意味しないタイプそのものであることをそのサブクラスのタイプのために使用するキーを、変更どのようにして、デフォルトコントロールのスタイルでスタイルを設定できますか?

public class EnhancedTextBox : TextBox 
{ 
    static EnhancedTextBox() 
    { 
     // Commenting this line out lets this use the default TextBox style. 
     DefaultStyleKeyProperty.OverrideMetadata(
      typeof(EnhancedTextBox), 
      new FrameworkPropertyMetadata(typeof(EnhancedTextBox))); 
    } 
} 

...通常、あなたがこのようなメタデータを変更することになっている、知っていますデフォルトのTextBoxスタイル。大したことはありません...その行をコメントアウトするだけで、キーはTextBoxによって直接使用される値に設定されているので、再び動作します。我々はのスタイルでいくつかのことを変更したいなかった場合は

は、私たちは迷っている、全体ではなく、スタイルは、我々は単に新しいスタイルを作成することができますし、そのBasedOnプロパティを設定し...しかし、我々は何をすべきかそこに設定? XAMLを手作業で取り出して新しいスタイルを作成し、キーを与えてからStaticResourceを使う必要はありませんが、これはTextBoxに基づいていますスタイル。

私は何かシンプルだと思っていますが、もう一度見つけました。誰も助けることができますか?

答えて

5

ちょうどそのように...私はそれを見つけました。それは明らかだったと私はそれを逃した自分自身を蹴る男!ここでそれを見つけた

<Style TargetType="{x:Type local:EnhancedTextBox}" 
    BasedOn="{StaticResource {x:Type TextBox}}"> 

    .... 

</Style> 

... WPF style basedon current

関連する問題