开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4029|回复: 1

mvvmContext.SetBinding方法不能触发OnPropertyChanged?

[复制链接]

0

精华

-4

贡献

0

赞扬

帖子
4
软币
80
在线时间
6 小时
注册时间
2016-3-25
发表于 2016-4-1 18:03:51 | 显示全部楼层 |阅读模式
winform MVVM demo中使用
// Set type of POCO-ViewModel    mvvmContext.ViewModelType = typeof(SumViewModel);
    // Data binding for the operands
    mvvmContext.SetBinding(editor1, e => e.EditValue, "Operand1");
    mvvmContext.SetBinding(editor2, e => e.EditValue, "Operand2");
    // Data binding for the result
    mvvmContext.SetBinding(resultLabel, l => l.Text, "ResultText");
可以在改变textedit控件值的时候自动把计算结果赋给label,但我在实际测试中做不到这一点,
改变textedit控件值的时候没有任何事件被触发。
如果把SetBinding方法换成以下方式实现是可以的,
TestViewModel viewModel = mvvmContext.GetViewModel<TestViewModel>();
            editor1.DataBindings.Add("EditValue", viewModel, "Operand1", true, DataSourceUpdateMode.OnPropertyChanged);
            editor2.DataBindings.Add("EditValue", viewModel, "Operand2", true, DataSourceUpdateMode.OnPropertyChanged);


不知道SetBinding失效的具体原因是什么?


附上POCO viewmodel部分代码:
// using the BindableProperty attribute
    [BindableProperty(OnPropertyChangedMethodName = "NotifyResultAndResultTextChanged")]
    public virtual int Operand1 { get; set; }
    // using the BindableProperty attribute
    [BindableProperty(OnPropertyChangedMethodName = "NotifyResultAndResultTextChanged")]
    public virtual int Operand2 { get; set; }


protected void NotifyResultAndResultTextChanged() {
        this.RaisePropertyChanged(x => x.Result); // change-notification for the Result
        this.RaisePropertyChanged(x => x.ResultText); // change-notification for the ResultText
    }


回复

使用道具 举报

0

精华

-4

贡献

0

赞扬

帖子
4
软币
80
在线时间
6 小时
注册时间
2016-3-25
 楼主| 发表于 2016-4-2 13:26:54 | 显示全部楼层
使用fluentAPI.SetBinding替代editor1.DataBindings.Add也是可以得
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-23 07:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表