2016-04-17 57 views
0

我已經創建了一個errorMessage作爲我的ViewModel中的字符串。當你得到一個錯誤或類似的東西時,我會用這個來向用戶顯示一條消息。在wpf中使用propertyChanged,綁定應該更新按鈕單擊

在視圖模型

我已經實現了INotifyPropertyChanged接口,也是我創造了這個塊:

#region INotifyPropertyChanged members 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected void NotifyPropertyChanged([CallerMemberName] string propertyName = "") 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    #endregion 

在視圖模型的頂部,我創建了一個名爲的ErrorMessage字符串。

public string ErrorMessage { get; set; } 

在構造函數中,我與

ErrorMessage = "Error message"; 

測試它,我可以看到在我的負荷視圖中的文本。 問題是當我遇到try/catch塊中的異常並將錯誤設置爲文本時,它不會被更新。

在異常或點擊一個按鈕,我曾嘗試進入:

ErrorMessage = "No rooms with entered settings were found"; 

<StackPanel Margin="10, 5" Grid.Row="5" Grid.ColumnSpan="3"> 
     <TextBlock FontFamily="../Fonts/bold.ttf#bold" Height="40" Foreground="Red" Text="{Binding ErrorMessage, UpdateSourceTrigger=PropertyChanged}"></TextBlock> 
    </StackPanel> 

如果向右滾動,你可以看到,我已經綁定ErrorMessage並給它UpdateSourceTrigger = PropertyChanged。

我需要什麼,所以我可以在我的ViewModel中將ErrorMessage設置爲等於某些場景中的文本?

+0

已經設置您的視圖的DataContext的到你的視圖模型? – ChrisF

+0

您需要在屬性的設置器中調用NotifyPropertyChanged,則不能使用Auto屬性。 –

+0

ChrisF,是的,否則它不會工作,當我在構造函數中設置ErrorMessage時,它的上下文設置後,我想根據場景 – Raaydk

回答

1

您必須在set方法中調用NotifyPropertyChanged(「ErrorMessage」)。使用完全獲取並設置訪問器實現(使用私有變量)來擴展屬性,然後在privateproperty = value行之後,在set方法中調用notifypropertychanged。

當屬性更改時通知視圖很重要。

小號

+0

更改errorMessage知道它現在終於工作了!謝謝。 – Raaydk

0

更改ErrorMessageProperty爲:

private string errorMessage; 

    public string ErrorMessage 
    { 
     get { return errorMessage; } 
     set 
     { 
      errorMessage = value; 
      NotifyPropertyChanged("ErrorMessage"); 
     } 
    }