WPF Prism 7.0+ IDialogAware(对话框)

示例:Prism 创建对话 Dialog,实现 IDialogAware 接口
第一步:创建区域
public partial class MessageControl : UserControl
{
public MessageControl()
{
InitializeComponent();
DataContext = new MessageControlViewModel();
}
}
public partial class MessageControlViewModel : BindableBase, IDialogAware
{
/// <summary>
/// 确定按钮
/// </summary>
public DelegateCommand ConfirmCommand { set; get; }
/// <summary>
/// 取消按钮
/// </summary>
public DelegateCommand CacleCommand { set; get; }
public MessageControlViewModel()
{
ConfirmCommand = new DelegateCommand(() =>
{
DialogParameters keyValuePairs = new DialogParameters();
keyValuePairs.Add("showdialog", true);
RequestClose?.Invoke(new DialogResult(ButtonResult.OK, keyValuePairs));
});
CacleCommand = new DelegateCommand(() =>
{
RequestClose?.Invoke(new DialogResult(ButtonResult.No));
});
}
private string _title = string.Empty;
public string Title
{
get { return _title; }
//数据同步方法:RaisePropertyChanged();
set { _title = value; RaisePropertyChanged(); }
}
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
public void OnDialogOpened(IDialogParameters parameters)
{
Title = parameters.GetValue<string>("value");
}
}
第二步:IOC注入
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
//仅注册视图
containerRegistry.RegisterDialog<MessageDialog>();
//注册视图时绑定VM
containerRegistry.RegisterDialog<MessageDialog, MessageDialogViewModel>();
//添加别名
containerRegistry.RegisterDialog<MessageDialog>("DialogName");
}

浙公网安备 33010602011771号