如何更新棱镜区域的cuurent视图

时间:2016-10-25 07:08:06

标签: c# .net prism

我想知道有没有办法在加载到棱镜区域后更新我当前的视图。 我的视图在加载时会自动更新,并且每次调用时都会使用生命周期界面加载。 有没有办法可以更新当前视图,如更新文件夹??

1 个答案:

答案 0 :(得分:0)

首先,视图模型(以及视图)应该在模型更改时自动更新,通过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并将更改通知推送到视图。如果我们导航到视图模型,也会发生同样的情况。