MVVM和更新属性

时间:2013-01-22 14:30:56

标签: c# mvvm

如果这个问题是基本的话,我仍然试图了解MVVM,所以道歉。

我的程序在屏幕上显示一些文字,但根据另一个属性的状态将取决于文本的颜色。

在我看来,我可以用两种方式做到这一点。

  1. 更改Status属性后,颜色将从setter中更改。 EG(伪代码)

    private LogDetails.LogStatus? logStatus;
    public LogDetails.LogStatus? LogStatus {
        get { return logStatus; }
        set { 
               Color color = //logic to work out the color
               Color = color; 
            }
    }         
    
  2. 我认为这可以通过OnPropertyChanged(我可以自己研究)来完成。

  3. 我的问题是,既然我有2个选项可以完成我的简单任务,在某些情况下是一个比另一个更好,还有一个是折旧/旧还是我只是为了安抚MVVM模式而被迫使用选项2?

    我认为如果我最终需要2路绑定(例如我可以从GUI更新状态)那么MVVM会更好,但是就目前而言,是否有人有任何想法?

1 个答案:

答案 0 :(得分:3)

您只需编写一个自定义IValueConverter,即LogStatus并将其转换为颜色。将Text直接绑定到LogStatus,并使用转换器将控件的Color绑定到LogStatus

代码非常简单(只需实现一个方法,将转换器添加为XAML资源并在绑定中引用它),但是您可以看到类似的示例here