J'ai un projet WPF dans lequel je règle dynamiquement le style de certains éléments par programmation dans mon ViewModel.Définition par programmation du style WPF au style de base
Je définir mes propriétés de style comme ceci:
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;
}
Et l'utiliser dans mon XAML comme ceci:
Style="{Binding KeyTypeValueMeaningStyle, UpdateSourceTrigger=PropertyChanged}"
Tout cela fonctionne parfaitement bien; cependant, j'essaie de rationaliser un peu plus et au lieu d'avoir okTextStyle
mis à un style nommé dans mon ResourceDictionary, je veux simplement qu'il soit défini sur mon style de base TextBox
défini dans mon ResourceDictionary, mais je ne sais pas si cela est possible .
J'ai essayé de définir une valeur nulle ou vide comme ceci, mais cela ne fonctionne pas.
private static Style okTextStyle = null As Style;
J'ai aussi essayé de faire des choses similaires dans mon bloc else
mais il ne fonctionne pas non plus. Je devine que puisque dans mon XAML je définis toujours un style, il veut une référence de style valide là-dedans, pas seulement une valeur nulle ou vide.
Certes, il s'agit d'un problème de programmation du premier monde car tout fonctionne correctement. Mais la définition SimpleTextBox
est juste une copie du style de base à ce stade et j'essaie de rationaliser un peu si possible et ne pas avoir des styles en double. Cela peut-il être fait?
Oui, ce n'est pas MVVM ... – Will