2013-01-22 61 views
0

我仍然試圖讓我的頭繞過MVVM,所以如果這個問題是基本的道歉。MVVM和更新屬性

我的程序在屏幕上顯示了一些文本,但取決於另一個屬性的狀態取決於文本的顏色。

在我看來,我可以用兩種方法做到這一點。

  1. 當狀態屬性發生變化時,顏色從設置者內部改變。 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(我可以研究自己)來完成。

我的問題是,因爲我給2個選項來完成我的簡單的任務,在某些情況下比另一種更好,是一個更折舊/老還是我被迫使用選項2只是爲了安撫MVVM模式?我會假設如果我最終需要2路綁定(所以我可以從一個GUI更新狀態),那麼MVVM更好,但就目前來看,任何人有任何想法?

+1

如果你使用'Option 1',只有你的ViewModel將被更新,你的View將不會改變它的值。 –

回答

3

您應該簡單地編寫一個自定義IValueConverter,將LogStatus轉換爲一種顏色。將Text直接綁定到LogStatus,並使用轉換器將控件的Color綁定到LogStatus。代碼非常簡單(只需實現一種方法,將轉換器添加爲XAML資源並將其引用到綁定中),但您可以看到類似的示例here

+0

我同意,轉換器將是要走的路。 –