【问题标题】:How to bind back to the dependency property如何绑定回依赖属性
【发布时间】:2010-10-23 15:26:38
【问题描述】:

我有一个自定义用户控件,它公开了一个 DepenencyProperty (ImageData)。

我已将此用户控件放置在页面上,并将其 ImageData 属性绑定到我页面的 ViewModel(照片)的属性。

<localControls:PhotoPicker ImageData="{Binding Path=Photo, Mode=TwoWay}"/>

当用户与设置控件 ImageData 属性的控件交互时,我的视图模型的 Photo 属性会更新 == 完美。但是,如果 ViewModel 更改 Photo 的值,则 PhotoPicker 的 ImageData 属性不会更改。在将数据从 ViewModel 获取回用户控件时,我可能会遗漏什么?

更新: 经过进一步调查,似乎从 ViewModel 通过依赖项属性通过绑定返回到控件的设置不会触发依赖项属性包装器属性的设置器。真是一团糟。我需要知道这种情况何时发生,如果我不能在包装器属性的设置器中执行此操作,我应该在哪里执行?

更新 2: 似乎找到有关 DependencyProperty 更改的唯一方法是在注册属性时在 PropertyMetadata 中添加一个 PropertyChangedCallback。

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    听起来您的视图模型不发送属性更改通知?极其简化,您的视图模型必须如下所示:

    public class MyViewModel : INotifyPropertyChanged
    {
        private object photo;
    
        public object Photo
        {
            get { return this.photo; }
            set { this.photo = value; this.OnPropertyChanged("Photo"); }
        }
    
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-06
      • 2016-01-22
      • 2012-11-08
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 2012-09-28
      相关资源
      最近更新 更多