IDialogAware 对话框
1 2 3 4 5 6 7 8 9 10 11 12 13 | <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> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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 } } |
1 2 3 4 5 6 | protected override void RegisterTypes(IContainerRegistry containerRegistry) { //注册对话框视图 containerRegistry.RegisterDialog<MsgView, MsgViewModel>(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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" ); } }); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!