20

コードビハインドで次のように設定するにはどうすればよいですか?

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

App.xamlにマージされたテーマを使用しています。これはすべてのコントロールでうまく機能しますが、たとえばTextBox、何かのスタイルを定義すると、上記のように使用しない限り、テーマスタイルは選択されずBasedOn、代わりにデフォルトのTextBoxスタイルが取得されます。

今、私はDataGridTextColumninコードビハインドを作成していますが、そのBasedOn部分を機能させることができませんEditingElementStyle

Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;

助言がありますか?また、BasedOnを使用せずに適用されるデフォルトのスタイルの代わりにテーマスタイルを取得する方法はありますか?

ありがとう

4

3 に答える 3

26

これを試して:

editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))

また、を指定せずにテーマスタイルを適用する方法がわかりませんBasedOn。そのような方法があれば、私も知りたいです...

于 2011-03-04T15:02:52.437 に答える
5

これは機能するはずです:

Style baseStyle = new Style(typeof(TextBox));
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = baseStyle;

コンストラクターでも実行できます。

Style editingStyle = new Style(typeof(TextBox), baseStyle);
于 2011-03-04T14:53:51.170 に答える
2

Pavlo Glazkovの答えは好きですが、コンパイルされません。

FindResourceは、FrameworkElementの(非静的)メンバーです。検索リクエストのコンテキストを特定する必要があります。

だから私はこれをお勧めします:

style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));
于 2016-08-18T15:34:38.353 に答える