我有一个ViewModel绑定到一个名为SettingsView的页面。 在这个页面中我有一些像这样的属性:
public string SettingsHeaderTitle { get { return AppResources.settings_header_title; } }
我有一个按钮导航到另一个页面,我们可以在其中更改语言,然后返回到SettingsPage。 我已经实现了这样的命令:
public void UpdateView()
{
RaisePropertyChanged(string.Empty);
}
我的问题是,当我在Loadedd或NavigatedTo事件上调用此命令时,没有任何反应。然后我添加了一个按钮来调用此命令(用于调试目的),并且页面已成功更新。
我做错了什么?
答案 0 :(得分:1)
您需要在ViewModel上实现INotifyPropertyChanged
,如此
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,然后它变得更加容易,你的ViewModel继承自ViewModelBase
并使你的属性像这样:
private bool _isComparisonRun;
public bool IsComparisonRun
{
get { return _isComparisonRun; }
set
{
if (_isComparisonRun == value) return;
_isComparisonRun = value;
RaisePropertyChanged(() => IsComparisonRun);
}
}