打开对话框后,我试图使用新的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,我将获得所需的结果。
这是正确的方法吗?
有人可以建议是否有更好的方法吗?