c# - 没有setter的viewmodel中的WPF mvvm属性?

标签 c# wpf mvvm

我正在使用并坚持使用 MVVM 模式来处理一些 WPF 问题。

我的大部分属性如下所示:

public string Period
{
    get { return _primaryModel.Period; }
    set
    {
        if (_primaryModel.Period != value)
        {
            _primaryModel.Period = value;
            RaisePropertyChanged("Period");
        }
    }
}

效果很好。

但是我也有一些像这样的属性:

public bool EnableConsignor
{
    get
    {
        return (ConsignorViewModel.Id != 0);
    }
}

它没有 setter ,因为 id 会“自动”更改(每次调用 ConsignorViewModel 的保存时。然而,这会导致“系统”不知道的问题当 bool 从 false 变为 true 时(因为没有调用 RaisePropertyChanged)。

最佳答案

对于这些类型的属性,您只需在相关数据更改时引发 PropertyChanged。像这样的东西:

public object ConsignorViewModel
{
   get { return consignorViewModel; }
   set
   {
       consignorViewModel = value;
       RaisePropertyChanged("ConsignorViewModel");
       RaisePropertyChanged("EnableConsignor");
   } 
}

RaisePropertyChanged 可以在任何方法中调用,因此只需将其放在执行任何会更改 EnableConsignor 返回值的操作之后。以上只是一个例子。

关于c# - 没有setter的viewmodel中的WPF mvvm属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524907/

相关文章:

c# - 我怎样才能对信息保密?

c# - 可以在比 O(n^2) 时间更好的时间内做到这一点吗?

apache-flex - MVVM - 什么应该包含什么......什么应该创造什么

c# - 垃圾收集器没有完成它的工作。内存消耗 = 1.5GB & OutOFMemory 异常

c# - 正在从后台线程更新的 Winforms UI 线程编码 BusinessObject 列表

c# - 如何在 wpf 中的 ItemsPanelTemplate 中找到控件?

c# - 多屏全屏(WPF)

c# - AvalonDock-如何为所有 anchor 禁用自动隐藏功能

c# - 如何正确过滤鼠标事件可能导致的不同操作?

silverlight - EventTrigger 在 MVVM 中的 ItemsControl 中不起作用