当UI元素调用MVVM属性集时,Windows 8.1 UI未更新
本文关键字:UI Windows 更新 调用 元素 MVVM 属性 | 更新日期: 2023-09-27 18:26:20
我的问题是,如果用户界面调用绑定到的属性的setter,则用户界面不会更新。这里有一个例子可以说明这一点:
假设我有一个文本框绑定到这样的属性。
<TextBox PlaceholderText="Task Name..." FontSize="24"
Text="{Binding TaskName, Mode=TwoWay}" />
这是我的财产:
public string TaskName
{
get
{
return _taskName;
}
set
{
_taskName = "something";
RaisePropertyChanged();
}
}
如果我在文本框中写了一些东西,那么在它失去焦点后,"something"应该会出现在里面,但没有任何变化。但是,如果我用代码更改属性的值,如下所示:
TaskName = "something";
然后,更改也将显示在UI上。
一些进一步的信息。这就是我实现INotifyPropertyChange接口的方式:
public class ViewModelBase : INotifyPropertyChanged
{
public static Navigator NavigationService;
public static void SetNavigationService(Navigator service)
{
NavigationService = service;
}
protected void GoBack()
{
NavigationService.GoBack();
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我真的不知道它为什么会这样。我找了好几个小时都找不到。
在属性的setter中,您需要调用
RaisePropertyChanged(x => x.TaskName)