3

OneWayToSource バインディングがターゲット値をリセットするのはなぜですか? バインディング コードは次のとおりです。

SolidColorBrush brush = GetTemplateChild("PART_PreviewBrush") as SolidColorBrush;
            if (brush != null)
            {
                Binding binding = new Binding("Color");
                binding.Source = brush;
                binding.Mode = BindingMode.OneWayToSource;
                this.SetBinding(ColorPicker.ColorProperty, binding);
            }

xaml で「Color」依存プロパティを設定しました。しかし、バインディングによって上書きされます。その後、バインディングは正常に機能します。したがって、本質的に私の問題は次のとおりです。バインディングによって上書きされるため、「Color」プロパティに開始値を与えることができません。

編集:

問題を解決する回避策を作成しましたが、OneWayToSource がそのように動作する理由をまだ理解していません。

System.Windows.Media.Color CurrentColor = this.Color;
                this.SetBinding(ColorPicker.ColorProperty, binding);
                this.Color = CurrentColor;

編集2:

可能な解決策が見つかりました:設定する必要があります:

binding.FallbackValue = this.Color;
4

1 に答える 1

1

BindingOperationsクラスを使用してバインディングを設定できます。

BindingOperations.SetBinding(
    brush, SolidColorBrush.ColorProperty, new Binding("Color") { Source = this });
于 2012-12-08T12:49:41.820 に答える