私は、自分のViewModelでプログラム的に特定の要素のスタイルを動的に設定するWPFプロジェクトを持っています。WPFスタイルをベースラインスタイルに設定する
私はそうのように私のスタイルのプロパティを定義しています:
private static Style okTextStyle = Application.Current.FindResource("SimpleTextBox") as Style;
private static Style errorTextStyle = Application.Current.FindResource("SimpleTextBoxError") as Style;
private Style keyTypeValueMeaningStyle = okTextStyle;
public Style KeyTypeValueMeaningStyle
{
get { return keyTypeValueMeaningStyle; }
set
{
keyTypeValueMeaningStyle = value;
OnPropertyChanged(new PropertyChangedEventArgs("KeyTypeValueMeaningStyle"));
}
}
// ...later in the code...
if (error)
{
...
KeyTypeValueMeaningStyle = errorTextStyle;
}
else
{
...
KeyTypeValueMeaningStyle = okTextStyle;
}
ですからように私のXAMLでそれを使用して:
Style="{Binding KeyTypeValueMeaningStyle, UpdateSourceTrigger=PropertyChanged}"
このすべてが完全に正常に動作します。しかし、私はもう少し合理化しようとしているのではなく、okTextStyle
を自分のResourceDictionaryの名前付きスタイルに設定するだけで、私は単に私のResourceDictionaryに定義されたTextBox
スタイルを自分のベースに設定したいと思っていますが、 。
nullや空白に設定しようとしましたが、動作しません。
private static Style okTextStyle = null As Style;
私もelse
ブロックで同様のことをやってみましたが、それはどちらか動作しません。私はXAMLでは常にスタイルを定義しているので、ヌルまたは空白の値だけではなく、そこに有効なスタイル参照が必要であると推測しています。
確かに、これはすべてが正常に機能しているため、第一世界のプログラミング問題です。しかし、SimpleTextBox
の定義は、この時点でのベースラインスタイルと重複しているだけで、できるだけ単純化し、重複したスタイルを持たないようにしようとしています。これはできますか?
ええと、それはMVVMではありません... – Will