我想知道有没有办法在加载到棱镜区域后更新我当前的视图。 我的视图在加载时会自动更新,并且每次调用时都会使用生命周期界面加载。 有没有办法可以更新当前视图,如更新文件夹??
答案 0 :(得分:0)
首先,视图模型(以及视图)应该在模型更改时自动更新,通过INotifyPropertyChanged
,专用事件,EventAggregator
的使用或任何其他消息传递系统
话虽如此,如果您希望视图模型仅在某个时间点更新(例如,当用户单击更新按钮时),您应该将更新代码移出NavigatedTo
方法并调用该方法来自NavigatedTo
和UpdateCommand
。
internal class MyViewModel : BindableBase, INavigationAware
{
public MyViewModel( IDataSource theSourceOfData )
{
_theSourceOfData = theSourceOfData;
UpdateCommand = new DelegateCommand( UpdateData );
}
public string MyProperty
{
get
{
return _myProperty;
}
set
{
SetProperty( ref _myProperty, value );
}
}
public DelegateCommand UpdateCommand { get; }
#region INavigationAware
public void OnNavigatedTo( NavigationContext navigationContext )
{
UpdateData();
}
#endregion
#region private
private readonly IDataSource _theSourceOfData;
private string _myProperty;
private void UpdateData()
{
_myProperty = _theSourceOfData.FetchTheData();
}
#endregion
}
现在,如果我们点击更新按钮,则会更新MyViewModel.MyProperty
并将更改通知推送到视图。如果我们导航到视图模型,也会发生同样的情况。