У меня есть эта кнопка, которая имеет двустороннюю привязку на кисти фона, я настроил свойство зависимостей, я также использую интерфейс INotifyPropertyChanged. Но у меня все еще возникают проблемы с двумя способами привязки.wpf control background 2-way binding only working one way
Если я обновляю свойство, привязанное к кнопке, меняется фон на кнопках, как если бы я обновлял фон кнопок непосредственно («button.Background = Brushes.Blue»), свойство не обновляется ,
Вот XAML для кнопки:
<Button Background="{Binding ElementName=MainWindow,Path=TitleBrush,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
Свойство:
public Brush TitleBrush
{
get
{
return (Brush)GetValue(TitleBrushProperty);
}
set
{
if (!_graph.TitleBrush.Equals(value))
{
_graph.TitleBrush = value;
SetValue(TitleBrushProperty, value);
NotifyPropertyChanged(nameof(TitleBrush));
}
}
}
public static readonly DependencyProperty TitleBrushProperty =
DependencyProperty.Register(nameof(TitleBrush), typeof(Brush), typeof(MainWindow));
два способа изменить цвет фона:
TitleBrush = Brushes.Red; // This works great
button.Background = Brushes.Red; // This changes the background but doesn't update the property
Любая помощь приветствуется.
Хорошо спасибо, я надеялся, что это не так. Но в любом случае, я думаю, что-то другое. – kevincorrigan
Добро пожаловать. Именно так WPF был разработан для работы. Если вам необходимо установить цвет элемента управления программно, вы можете создать отдельный ViewModel, поместить туда свойства, установить экземпляр как DataContext и работать с ним таким образом. Прямой доступ/обращения к элементам управления должен быть последним средством. –