none
手动修改DependencyProperty后,如何使其触发更新操作??? RRS feed

  • 问题

  • 大家好:

          我自定义了一个DependencyProperty属性, 绑定了个自定义对象。由于业务需要,我手动修改了该属性,但是这种修改不会触发更新事件,有什么办法使其更新呢???

    2011年6月16日 6:34

答案

  • 个人认为使用依赖项属性的目的就是实时的和界面交互

    比如你界面的background 绑定了后台的一个 ImageBrush 类型的依赖项属性,

    在后台更改这个属性,界面的背景就会被改变了.不需要其他操作

     

    如果你要验证回调的话,就要使用PropertyChangedCallBack了

     

    具体用法

     

    public ImageBrush MyProperty
        {
          get { return (ImageBrush)GetValue(MyPropertyProperty); }
          set { SetValue(MyPropertyProperty, value); }
        }
    
    ///定义回调
        public static PropertyMetadata propertyMetadata = new PropertyMetadata(new PropertyChangedCallback(PropertyChangedCallBack));
    
        // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
          DependencyProperty.Register("MyProperty", typeof(ImageBrush), typeof(MainWindow), propertyMetadata);
    
    ///回调方法
        static void PropertyChangedCallBack(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
          MessageBox.Show(e.NewValue.ToString());
        }
    



    Hero
    2011年6月17日 4:01

全部回复

  • 你好,

    只要DependencyProperty的值发生变化,PropertyChangedCallBack都是会触发的。 能具体讲讲你的问题吗?


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月17日 3:26
    版主
  • 个人认为使用依赖项属性的目的就是实时的和界面交互

    比如你界面的background 绑定了后台的一个 ImageBrush 类型的依赖项属性,

    在后台更改这个属性,界面的背景就会被改变了.不需要其他操作

     

    如果你要验证回调的话,就要使用PropertyChangedCallBack了

     

    具体用法

     

    public ImageBrush MyProperty
        {
          get { return (ImageBrush)GetValue(MyPropertyProperty); }
          set { SetValue(MyPropertyProperty, value); }
        }
    
    ///定义回调
        public static PropertyMetadata propertyMetadata = new PropertyMetadata(new PropertyChangedCallback(PropertyChangedCallBack));
    
        // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
          DependencyProperty.Register("MyProperty", typeof(ImageBrush), typeof(MainWindow), propertyMetadata);
    
    ///回调方法
        static void PropertyChangedCallBack(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
          MessageBox.Show(e.NewValue.ToString());
        }
    



    Hero
    2011年6月17日 4:01