2017-07-04 2 views
0

別のプロパティのセッターで、なぜ私はセッターSelectedColor財産のTransparentColorプロパティを変更することはできませんか?コールバックメソッドを持つソリューションは正常に動作しますが、別のプロパティを変更した場合の違いは何ですか?WPF - 変更プロパティ値は、私の<strong>カスタムコントロール</strong>の次の例では


public class MyColorPicker : Control 
{ 
    static MyColorPicker() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(MyColorPicker), new FrameworkPropertyMetadata(typeof(MyColorPicker))); 
    } 

    public static readonly DependencyProperty SelectedColorProperty = 
      DependencyProperty.Register("SelectedColor", typeof(Color), typeof(MyColorPicker), new PropertyMetadata(Color.FromRgb(0, 201, 201), OnSelectedColorChange)); 

    private static void OnSelectedColorChange(DependencyObject sender, DependencyPropertyChangedEventArgs e) 
    { 
     var colorPicker = (MyColorPicker)sender; 
     var selectedColor = colorPicker.SelectedColor; 
     colorPicker.TransparentColor = Color.FromArgb(0, selectedColor.R, selectedColor.G, selectedColor.B); 
    } 

    public Color SelectedColor 
    { 
     get { return (Color)GetValue(SelectedColorProperty); } 
     set 
     { 
      // Why this not working? BorderStopColor = Color.FromArgb(0, value.R, value.G, value.B); 
      SetValue(SelectedColorProperty, value); 
     } 
    } 

    private static readonly DependencyPropertyKey TransparentColorPropertyKey = 
      DependencyProperty.RegisterReadOnly("TransparentColor", typeof(Color), typeof(MyColorPicker), new PropertyMetadata(Color.FromArgb(0, 0, 201, 201))); 

    public static readonly DependencyProperty TransparentColorProperty = TransparentColorPropertyKey.DependencyProperty; 

    public Color TransparentColor 
    { 
     get { return (Color)GetValue(TransparentColorProperty); } 
     protected set { SetValue(TransparentColorPropertyKey, value); } 
    } 
} 

答えて

1

のみコールSetValue方法は、依存関係プロパティの実際の値を設定する必要があり依存プロパティのCLRラッパーのセッター。

コールバックに他のロジックを実装する必要があります。

はまた、XAMLで依存関係プロパティを設定するときにCLRプロパティラッパーは、実行時にバイパスされている(ただし、コールバックがありません)のでご注意:

Why are .NET property wrappers bypassed at runtime when setting dependency properties in XAML?

関連する問題