【问题标题】:Databinding to non-ViewModel properties in MvvMCross数据绑定到 MvvMCross 中的非 ViewModel 属性
【发布时间】:2014-01-21 13:47:48
【问题描述】:

我有一个绑定到 ViewModel 上的属性的 MvxListView,它是 List<MyClass>

MyClass 是一个普通的旧对象,它有一个名为 Completed 的布尔属性,我已在列表视图项模板中绑定到 CheckedTextView 的 Checked 属性。

当我单击列表视图项时,它会调用一个调用DoSomething(MyClass item) 方法的命令。在DoSomething 方法中,我将Completed 属性设置为其新值。但是,由于 MyClass 不是具有 RaisePropertyChanged 属性的 ViewModel,因此选中的属性不会在用户界面中更新。

Completed 属性发生变化时,我将如何在这个基本 POCO 上完成数据绑定以更新用户界面?

【问题讨论】:

    标签: c# android data-binding mvvm mvvmcross


    【解决方案1】:

    如何在这个基本 POCO 上完成数据绑定,以在 Completed 属性更改时更新用户界面?

    Xaml/C# 风格的数据绑定依赖于INotifyPropertyChanged - 没有这个,UI 就无法知道它需要更新。

    所以要让数据绑定工作,你的 MyClass 对象不能只是一个 POCO - 它需要以某种方式实现 INotifyPropertyChanged - 例如通过继承 MvxNotifyPropertyChanged 或直接实现 INotifyPropertyChanged(例如,参见 http://msdn.microsoft.com/en-us/library/vstudio/ms229614%28v=vs.100%29.aspx


    除此之外:MvvmCross 也使其他绑定模式成为可能,而不是INotifyPropertyChanged - 例如。请参阅https://github.com/MvvmCross/MvvmCross/wiki/Databinding#rio 中的 FieldBinding 中的 INotifyChanged - 但这仍然需要的不仅仅是 POCO 来动态更新绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2011-02-01
      • 2011-08-26
      • 2012-07-20
      相关资源
      最近更新 更多