我有一个只读文本框在UI中绑定到Properties.Settings.Default.MyVar,当窗口打开绑定正确获取值。但是,当用户点击一个按钮(这个按钮改变Properties.Setting.Default.MyVar)文本框不更新(但如果我关闭窗口,并再次打开它,然后我得到新的值)。我已经尝试UpdataSourceTrigger但不起作用。更新属性。设置绑定
我的XML:
<TextBox IsReadOnly="True"
Text="{Binding Source={StaticResource settings}, Path=MyVar}"/>
<Button Content="..." Click="ChangeMyVar_Click"/>
窗口的代码
public partial class ConfigureWindow : Window, INotifyPropertyChanged
{
public ConfigureWindow()
{
InitializeComponent();
}
private void ChangeMyVar_Click(object sender, RoutedEventArgs e)
{
Properties.Settings.Default.MyVar = "Changed";
Properties.Settings.Default.Save();
OnPropertyChanged("MyVar");
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(info));
}
}
调试我看到处理始终是空的。我的INotifyPropertyChanged错误实现?或者我无法使用Properties.Settings更新UI? 如何解决这个问题?谢谢。
控件绑定到Settings对象的属性,* not *绑定到Window的属性。所以在Window上调用PropertyChanged是没有意义的。这些设置已经实现了INotifyPropertyChanged,你不需要手动去做。你的问题在别的地方,查看HB的回答 – 2012-08-12 17:41:56