无需修改任何类即可绑定object.object.prop

时间:2019-03-04 05:20:56

标签: c# .net wpf mvvm

我有一个像Details.Article.Location.Stock这样的道具,我需要将其绑定到UI。但是问题是,这是来自dll的,我没有对该代码的任何访问权。一旦我从ViewModel修改了Details.Article.Location.Stock的值,它就不会反映在ui上,因为INotifyPropertyChanged类不存在,而且我也不想创建一个新对象只需为此更新一个道具的任何解决方案

1 个答案:

答案 0 :(得分:3)

在某个时候,该对象将必须通过视图模型属性公开,即:

public class YourViewModel : BaseViewModel
{
    public YourEntityClass Something {get; set;}
}

您是说您不能更改YourEntityClass,因此您必须在此顶层(即Something属性)实现INPC。此后,每次更新YourEntityClass内的属性时,您都需要手动发出信号,表明整个对象已更新,即:

RaisePropertyChanged(() => this.Something);

这是一个可怕的解决方案,因为这意味着您的整个对象现在都将在GUI中不必要地更新,但是鉴于您为自己设置的约束,这基本上是您唯一的选择。