IDialogAware 对话框
<Grid Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock DockPanel.Dock="Top" Text="编辑窗口" FontSize="50"/>
<TextBox Grid.Row="1" Height="30" Text="{Binding Title}"/>
<StackPanel Grid.Row="2" HorizontalAlignment="Right" Orientation="Horizontal" >
<Button Command="{Binding SaveCommand}" Content="确定" Height="30" Width="80"/>
<Button Command="{Binding CancelCommand}" Margin="10" Content="取消" Height="30" Width="80"/>
</StackPanel>
</Grid>

using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
namespace PrismWpfBlankApp.ViewModels
{
public class MsgViewModel : BindableBase, IDialogAware
{//IDialogAware 对话框接口
public MsgViewModel()
{
SaveCommand = new DelegateCommand(Save);
CancelCommand = new DelegateCommand(Cancel);
}
private string title;
public string Title
{
get { return title; }
set { SetProperty(ref title, value); }
}
public DelegateCommand SaveCommand { get; }
public DelegateCommand CancelCommand { get; }
private void Save()
{
//当关闭对话框时,回传参数
DialogParameters param = new DialogParameters();
param.Add("Value", Title);
RequestClose?.Invoke(new DialogResult(ButtonResult.OK, param));
}
private void Cancel()
{
RequestClose?.Invoke(new DialogResult(ButtonResult.No));
}
#region 接口
public event Action<IDialogResult> RequestClose;
public bool CanCloseDialog()
{//是否允许关闭窗口
return true;
}
public void OnDialogClosed()
{//窗口关闭之后的处理业务
}
public void OnDialogOpened(IDialogParameters parameters)
{//打开窗口之前
Title = parameters.GetValue<string>("Value");//获取传入的参数
}
#endregion
}
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
//注册对话框视图
containerRegistry.RegisterDialog<MsgView, MsgViewModel>();
}
public class MainWindowViewModel : BindableBase
{
private readonly IDialogService m_DialogService;
private string _title = "Prism Application";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public MainWindowViewModel(IDialogService dialogService)
{
OpenACommand = new DelegateCommand(OpenA);
m_DialogService = dialogService;
}
public DelegateCommand OpenACommand { get; }
private void OpenA()
{
DialogParameters param=new DialogParameters();
param.Add("Value", "传入的参数");
m_DialogService.ShowDialog(nameof(MsgView), param, result =>
{
if(result.Result== ButtonResult.OK)
{
//得到返回参数的结果
Title = result.Parameters.GetValue<string>("Value");
}
});
}
}
浙公网安备 33010602011771号