1

MVVMプロジェクトでは、ビューモデルによって公開されたプロパティがtrueに設定されている場合にのみ、スタイル「ReadOnlyTextBox」をコントロールに適用したいと思います。トリガーが使えると思っていたのですが、残念ながらここから学びました

別のスタイルを適用するためのスタイルトリガー

そしてここ

Style.Triggersを作成する方法は、適用される別の名前のスタイルをトリガーします

スタイル定義内のスタイルプロパティを変更することはできません。簡単な代替方法を探しています。それ以外の場合は、トリガーを使用して、スタイル「ReadOnlyTextBox」内に含まれるすべてのプロパティを適用します。このアプローチはDRYの原則に違反しているため、私はこのアプローチが好きではありません。他の提案をしていただければ幸いです。

ありがとうフィリッポ

4

2 に答える 2

1

トリガーを使用することを実際に強制されていない場合、実用的な方法は、ViewModel-Value を入力として受け取り、目的のスタイル (DataTemplateSelectors に似たもの) を返す IValueConverter を使用して、次のようなことを行うことです。

<UserControl.Resources>
<prefix:StyleConverter x:Key="styleConverter"/>
</UserControl.Resources>
<!-- blabla -->
<TextBox Style="{Binding SomeCondition, Converter={StaticResource styleConverter}}"/>
<!-- blabla -->
于 2012-09-05T06:59:45.250 に答える
0

スタイル セレクターを使用して、カスタム条件に基づいてスタイルを適用できます。

スタイルセレクター

于 2012-09-05T07:03:49.517 に答える