2017-08-17 134 views
-2

我有一個多語言的wpf項目。我正在使用ResourceDictionary來執行此操作。對於靜態TextBlock我可以改變文本語言:WPF TextBlock綁定到多語言的ResourceDictionary

<TextBlock Text="{Binding Sample, Source={StaticResource Resources}}" /> 

我應該如何更改動態TextBlock文本。這似乎是不可能做這樣:

<TextBlock Text="{Binding Sample} 

而且在後面的代碼:

Sample = Resources.SampleText; 

如果這是不可能的。還有其他的選擇嗎?提前致謝!

+2

從這裏開始閱讀:[數據綁定概述](https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/data/data-binding-overview)。 – Clemens

回答

1

類,其中Sample屬性定義應該實現INotifyPropertyChanged接口,提高變更通知:

public class Translations : INotifyPropertyChanged 
{ 
    private string _sample; 
    public string Sample 
    { 
     get { return _sample; } 
     set { _sample = value; OnPropertyChanged("Sample"); } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    public void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

只有這樣,你就可以通過簡單的Sample源屬性設置爲一個新的動態更新TextBlock值爲string