我试图将不同类的静态属性绑定到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'属性)?然后,如果你有另一个令牌文件,你可以有一个方便的方式来重用这个代码... –