Eine allgemeinere Methode, um das Gleiche zu erreichen:
SomeView.xaml
<UserControl>
<UserControl.Resources>
<converters:BooleanToStyleConverter x:Key="MyButtonStyleConverter"
TrueStyle="{StaticResource AmazingButtonStyle}"
FalseStyle="{StaticResource BoringButtonStyle}"/>
</UserControl.Resources>
<Grid>
<Button Style={Binding IsAmazingButton, Converter={StaticResource MyButtonStyleConverter}}/>
</Grid>
</UserControl>
BooleanToStyleConverter.cs
public class BooleanToStyleConverter : IValueConverter
{
public Style TrueStyle { get; set; }
public Style FalseStyle { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool && (bool) value)
{
return TrueStyle;
}
return FalseStyle;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Dieser Konverter funktioniert in jeder Ansicht mit jeder Art von Steuerelement mit jedem Stil, den Sie wählen, solange Sie an eine boolesche Eigenschaft in Ihrem ViewModel binden, um den Stilwechsel zu steuern. Es ist leicht, ihn an andere Bindungsanforderungen anzupassen. Dies funktioniert in einem DataTemplate als gut.