如何在棱镜区域更新当前视图

本文关键字:视图 更新 区域 棱镜 | 更新日期: 2023-09-27 18:14:50

我想知道在棱镜区域加载后是否有方法更新我当前的视图。我的视图在加载时自动更新,并且每次调用时都使用生命周期接口加载。是否有一种方法,我们可以更新当前视图,如更新文件夹?

如何在棱镜区域更新当前视图

首先,视图模型(以及它的视图)应该在模型更改时自动更新自己,可以通过INotifyPropertyChanged、专用事件、EventAggregator的使用或任何其他消息传递系统。

也就是说,如果您希望视图模型仅在某个时间点更新(例如,当用户单击更新按钮时),您应该将更新代码移出NavigatedTo方法,并从NavigatedToUpdateCommand中调用该方法。

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将被更新,并且更改通知将推送到视图。如果我们导航到视图模型,同样会发生