Prism Dialog

1.注册Dialog对应信息

 protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterDialog< Views.DialongView,ViewModels.DialongViewModel>();//viewModel一定要继承 IDialogAware
        }

2.调用

 private IDialogService _dialogService;//通过IDialogService接口获取当全局定义可用区域,往这个区域动态的去设置内容.
        public MainViewModel( IDialogService dialogService)
        {//构造函数获取IDialogService接口获取当全局定义可用区域
            _dialogService = dialogService;
        }
//下面是使用
        private void Open_Dialog(object obj)
        {
//obj要各View中的窗体一个名字
            DialogParameters par = new DialogParameters();
            par.Add("Title", "测试弹窗");
            par.Add("Message", "生是中国人,死是中国魂.");//传两个参数过去
            par.Add("Brush", Brushes.Red); //加个字体颜色
            _dialogService.ShowDialog(obj.ToString(), par, callback=>
            {
                if (callback.Result == ButtonResult.OK)
                {//点击了确定按键
                    string result = callback.Parameters.GetValue<string>("Value");
                }
                else
                { 
                //点击了取消
                }
            });
        }

3.dialog  ViewModel接收处理以及返回

public class DialongViewModel : BindableBase, IDialogAware//Dialog窗体一定要继承这个IDialogAware接口
    {
        private string messagem;
        public string Message
        {
            get { return messagem; }
            set { messagem = value; RaisePropertyChanged(); }
        }
        private Brush brushChange;

        public Brush BrushChange
        {
            get { return brushChange; }
            set { brushChange = value; RaisePropertyChanged(); }
        }
        public string Title { get; set; }

        public event Action<IDialogResult> RequestClose;
        /// <summary>
        /// 系统的那个Close可用
        /// </summary>
        /// <returns></returns>
        public bool CanCloseDialog()
        {
            return true;
        }
        /// <summary>
        /// 关掉窗体的事件
        /// </summary>
        public void OnDialogClosed()
        {
            DialogParameters parameters = new DialogParameters();
            parameters.Add("Value", "Click Confirm");
            RequestClose?.Invoke(new DialogResult(ButtonResult.OK, parameters));
        }
        /// <summary>
        /// 打开窗体的事件
        /// </summary>
        /// <param name="parameters"></param>
        public void OnDialogOpened(IDialogParameters parameters)
        {
            Title = parameters.GetValue<string>("Title");//窗体显示的标题
            Message = parameters.GetValue<string>("Message");//窗体显示的内容
            BrushChange= parameters.GetValue<Brush>("Brush"); //字显示的颜色
        }

        public ICommand ClickCommandDialogOk //绑定的OK按键
        {
            get => new DelegateCommand(OnDialogClosed);
        }
        public ICommand ClickCommandDialogCancel //绑定的取消按键
        {
            get => new DelegateCommand(() =>
            {
                RequestClose?.Invoke(new DialogResult(ButtonResult.No));
            });
        }

    }

UI绑定代码

    <Grid Background="White">
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="auto "></RowDefinition>
        </Grid.RowDefinitions>

        <TextBlock Text="{Binding Message}" Foreground="{Binding BrushChange}"  FontSize="20" FontWeight="Bold" HorizontalAlignment="Center"  VerticalAlignment="Top"   Margin="15"></TextBlock>

        <StackPanel  Grid.Row="2" HorizontalAlignment="Right" Orientation="Horizontal" >
            <Button Content="取消" Margin="10" Command="{Binding ClickCommandDialogCancel}"   FontSize="20"></Button>
            <Button Content="确定" Margin="10" Command="{Binding ClickCommandDialogOk }" FontSize="20"></Button>
        </StackPanel>
    </Grid>

资源

Prism模块化and导航-C#文档类资源-CSDN下载Prism模块化and导航,传参数导航更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/lw8014/85016701

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值