如何将ScopedRegion与新的Prism DialogService一起使用?

时间:2019-04-20 08:15:25

标签: prism

打开对话框后,我试图使用新的Prism DialogService来确定作用域。假设我有一个包含区域(ChildViewRegion)的ViewC,并且一旦对话框打开,我想导航到另一个视图,就可以说ViewA为ChildViewRegion。

我设法通过以下代码解决了该问题,但不确定其正确方法吗?

请在下面找到代码

<ContentControl  Grid.Row="1" prism:RegionManager.RegionName="ChildViewRegion" prism:RegionManager.RegionManager="{Binding ScopedRegionManager}" />

在相应的视图模型中,我具有以下代码来创建作用域区域

public class ViewCViewModel : DialogViewModelBase,INotifyPropertyChanged
    {


        public ViewCViewModel(IRegionManager regionManager)
        {
            ScopedRegionManager= regionManager.CreateRegionManager();
            NavigateCommand=new DelegateCommand<string>(ExecuteNavigate,CanExecuteNavigate);
        }



        private IRegionManager _scopedRegionManager;

        public IRegionManager ScopedRegionManager
        {
            get => _scopedRegionManager;
            set
            {
                _scopedRegionManager = value;
                OnPropertyChanged();
            }
        }


        #region NavigateCommand

        public DelegateCommand<string> NavigateCommand { get; set; }


        private void ExecuteNavigate(string view)
        {
            ScopedRegionManager.RequestNavigate("ChildViewRegion",view);
        }


        private bool CanExecuteNavigate(string view) => true;

        #endregion



        public event PropertyChangedEventHandler PropertyChanged;


        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

因此,通过将ScopedRegion绑定到棱镜:RegionManager.RegionManager,我将获得所需的结果。

这是正确的方法吗?

有人可以建议是否有更好的方法吗?

0 个答案:

没有答案