如何绑定回依赖项属性

时间:2010-10-23 15:26:38

标签: silverlight

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

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

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

当用户与控件设置交互时,控件ImageData属性更新了我的viewmodel的Photo属性== Perfect。但是,如果ViewModel更改Photo的值,则不会更改PhotoPicker的ImageData属性。将数据从ViewModel返回到用户控件时我可能会缺少什么?

更新: 经过进一步研究,似乎从ViewModel通过绑定返回到控件的设置,通过dependencyproperty不会触发依赖属性包装器属性的setter。真是一团糟。我需要知道何时发生这种情况,如果我不能在包装器属性的setter中那样做我应该在哪里做呢?

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

1 个答案:

答案 0 :(得分:1)

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

public class MyViewModel : INotifyPropertyChanged
{
    private object photo;

    public object Photo
    {
        get { return this.photo; }
        set { this.photo = value; this.OnPropertyChanged("Photo"); }
    }

    // ...
}
相关问题