Dependency Property dependent on another

后端 未结 2 861
忘掉有多难
忘掉有多难 2020-12-25 12:34

How can one register a dependency property whose value is calculated using the value of another dependency property?

Because the .NET property wrappers are bypassed

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-25 13:32

    You're actually correct, you should use PropertyChangedCallback. Here's how:

    public bool TestBool
    {
      get { return (bool)GetValue(TestBoolProperty); }
      set 
      { 
        SetValue(TestBoolProperty, value);
      }
    }
    public static readonly DependencyProperty TestBoolProperty =
      DependencyProperty.Register("TestBool", typeof(bool), typeof(ViewModel),
      new PropertyMetadata(false, new PropertyChangedCallback(OnTestBoolChanged)));
    
    private static void OnTestBoolChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
      ViewModel vm = d as ViewModel;
      vm.TestDouble = value ? 100.0 : 200.0;
    }
    
    public double TestDouble
    {
      get { return ((double)GetValue(TestDoubleProperty)); }
      set { SetValue(TestDoubleProperty, value); }
    }
    public static readonly DependencyProperty TestDoubleProperty =
      DependencyProperty.Register("TestDouble", typeof(double), typeof(ViewModel));
    

提交回复
热议问题