我有一个绑定(bind)到一个名为 SettingsView 的页面的 ViewModel。
在这个页面中,我有一些这样的属性:
public string SettingsHeaderTitle { get { return AppResources.settings_header_title; } }
我有一个按钮可以导航到另一个页面,我们可以在其中更改语言,然后返回 SettingsPage。
我已经实现了这样的命令:
public void UpdateView()
{
RaisePropertyChanged(string.Empty);
}
我的问题是,当我从 Loadedd 或 NavigatedTo 事件调用此命令时,什么也没有发生。然后我添加了一个按钮来调用这个命令(用于调试目的)并且页面更新成功。
我究竟做错了什么?
最佳答案
您需要执行 INotifyPropertyChanged
在你的 ViewModel 上像这样
public class SelectionItem<T> : INotifyPropertyChanged
{
private AppliesTo _appliesTo;
public AppliesTo AppliesTo
{
get { return _appliesTo; }
set
{
_appliesTo = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("AppliesTo"));
}
}
}
编辑:我刚刚注意到您正在使用 MVVM Light,然后它变得更加容易,在您的 ViewModels 中继承自
ViewModelBase
并使您的属性(property)像这样:private bool _isComparisonRun;
public bool IsComparisonRun
{
get { return _isComparisonRun; }
set
{
if (_isComparisonRun == value) return;
_isComparisonRun = value;
RaisePropertyChanged(() => IsComparisonRun);
}
}
关于c# - MVVM Light - RaisePropertyChanged 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24208524/