代码之家  ›  专栏  ›  技术社区  ›  Mizipzor

设置依赖属性后调用的C#函数

  •  2
  • Mizipzor  · 技术社区  · 16 年前

    我的代码当前如下所示:

    private Foo myFoo;
    
    public Foo CurrentFoo
    {
        get { return myFoo; }
        set { SetFoo(value); }
    }
    
    private void SetFoo(Foo newFoo)
    {
        // Do stuff
        // Here be dragons
    
        myFoo = newFoo;
    }
    

    为了能够在XAML/WPF中绑定它,我需要 Foo 转换为依赖项属性:

    public static DependencyProperty CurrentFooProperty = 
        DependencyProperty.Register("CurrentFoo", typeof(Foo), 
            typeof(FooHandler), new PropertyMetadata(false));        
    
    public Foo CurrentFoo
    {
        get { return (Foo)GetValue(CurrentFooProperty); }
        set { SetValue(CurrentFooProperty, value); }
    }
    

    我知道我可以添加一个验证函数到依赖属性,但我假设它不应该用于这个?我需要将更改传达给尚不能绑定到XAML中的遗留系统。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Bryan Watts    16 年前
    public static DependencyProperty CurrentFooProperty = DependencyProperty.Register(
        "CurrentFoo",
        typeof(Foo), 
        typeof(FooHandler),
        new PropertyMetadata(OnCurrentFooChanged));
    
    private static void OnCurrentFooChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var currentFoo = (Foo) e.NewValue;
    
        // Use
    }
    
        2
  •  1
  •   Reed Copsey    16 年前

    这应该由分配给Dependency属性的回调来处理。合适的位置取决于这里实际发生的情况:

    // Do stuff
    // Here be dragons
    

    three callbacks that can be assigned to a Dependency Property Property Changed callback ,并在其中添加通知。

    但是,如果这是通过遗留系统执行相当于验证的操作,那么将这些龙放到 ValidationCallback.

    考虑到您的场景,我怀疑强制值回调是否合适。

    推荐文章