私はバックグラウンドブラシに双方向バインディングを持っています。依存プロパティを設定しました。また、INotifyPropertyChangedインターフェイスも使用しています。しかし、私はまだ双方向バインディングに問題があります。wpfコントロールのバックグラウンド双方向バインディングは片方向でしか動作しません
ボタンにバインドされているプロパティを更新するとボタンの背景が変わりますが、ボタンの背景を直接更新した場合(「button.Background = Brushes.Blue」)、プロパティは更新されません。
<Button Background="{Binding ElementName=MainWindow,Path=TitleBrush,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
プロパティ:
TitleBrush = Brushes.Red; // This works great
button.Background = Brushes.Red; // This changes the background but doesn't update the property
すべてのヘルプは高く評価されています。私は、背景色を変更
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));
二つの方法ここで
はボタンのXAMLです。
ありがとう、私はそうではなかったと思っていた。しかし、とにかく、私は他の何かを私が推測するでしょう。 – kevincorrigan
ようこそ。それがWPFが動作するように設計された方法です。コントロールの色をプログラマチックに設定する必要がある場合は、別のViewModelを作成し、そのプロパティを配置し、DataContextとしてインスタンスを設定し、そのように操作することができます。コントロールへの直接アクセス/呼び出しは最後の手段である必要があります。 –