Вам необходимо вызвать OnPropertyChanged для свойства BackgroundColorBtn1, так как вы изменяете закрытую переменную поддержки, а представление должно быть уведомлено.
Вы можете изменить свой метод MyAction следующим образом
public void MyAction()
{
_backgroundColorBtn1 = Colors.Blue;
OnPropertyChanged(nameof(BackgroundColorBtn1));
}
В качестве альтернативы, вы можете установить свойство непосредственно вместо поля поддержки, которое будет вызывать сам вызов OnPropertyChanged.
public void MyAction()
{
BackgroundColorBtn1 = Colors.Blue;
}
Вам также потребуется использовать преобразователь цвета в кисть.Свойство background кнопки принимает кисть, а не цвет.Преобразователь позволит вам преобразовать выбранный цвет в кисть.
Вы можете определить преобразователь следующим образом
public class ColorToSolidColorBrushValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return null;
if (value is Color)
return new SolidColorBrush((Color)value);
throw new InvalidOperationException("Unsupported type [" + value.GetType().Name + "], ColorToSolidColorBrushValueConverter.Convert()");
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
И затем вы можете использовать его как
Background="{Binding BackgroundColorBtn1, Converter={StaticResource colorToSolidColorBrushConverter}}"
Пожалуйста, убедитесь, что вы добавили следующее в свой раздел ресурсов перед его использованием
<Window.Resources>
<ResourceDictionary>
<myNameSpace:ColorToSolidColorBrushValueConverter x:Key="colorToSolidColorBrushConverter"/>
</ResourceDictionary>
</Window.Resources>