我試圖將不同類的靜態屬性綁定到TextBlock的Text屬性,並且可以使綁定工作,但是當靜態屬性的值發生更改時,沒有更新文本屬性。我讀過,我不能使用INotifyPropertyChanged,因爲該屬性是靜態的,並且已經看到許多建議使用依賴屬性的解決方案。我對C#非常陌生,並且不太瞭解如何使用依賴屬性,但做了一些似乎沒有工作的嘗試有兩個原因。 1.我的靜態屬性具有自定義getter和setter和2.靜態屬性用於許多靜態方法,我無法弄清楚如何使用依賴屬性進行工作。我不知道如何在使用Dependency屬性時使用自定義getter和setter,或者如果這可以完成,或者在將其更改爲Dependency Property後,如何在靜態方法中繼續使用靜態屬性。如何將XAML綁定到靜態屬性?
下面是靜態屬性當前代碼:
public class Helper
{
public static string Token
{
get
{
using (StreamReader streamReader = new StreamReader("Token.ini"))
{
return streamReader.ReadLine();
}
}
set
{
using (StreamWriter streamWriter = new StreamWriter("Token.ini"))
{
streamWriter.WriteLine(value);
}
}
}
public static MethodThatUsesToken(){}
public static OtherMethodThatUsesToken(){}
這裏當前的XAML其作品,但不更新綁定:
<Window.Resources>
<local:Helper x:Key="helper"/>
</Window.Resources>
<TextBlock Text="{Binding Source={StaticResource helper},Path=Token Converter={StaticResource NameConverter}}"/>
我真的很感激任何幫助!
爲什麼使它靜態?爲什麼不將token讀取器/寫入器構建成一個完整的類,並且只是在視圖模型上暴露它的一個實例(通過'字符串Token'屬性)?然後,如果你有另一個令牌文件,你可以有一個方便的方式來重用這個代碼... –