0
点赞
收藏
分享

微信扫一扫

WPF学习自我总结二(弹窗页面间命令传值处理)

萍儿的小确幸 2022-03-26 阅读 74

一:父子弹窗间页面传值以及命令处理
在处理父页面弹窗子页面之后,子页面下发命令给父页面,然后父页面执行之后返回值给子页面,进行子页面响应

父页面代码
 Window Window = null;
        LoggingFileServerLogDialogViewModel serverlog = new LoggingFileServerLogDialogViewModel();//子页面实体类写在外面,方便进行操作子页面ViewModel
        private void LogFileServerLogsDialog() {
            serverlog.AcceptAppendParameter += new EventHandler(GetDialogAppendParameter);
            serverlog.AcceptDeleteParameter += new EventHandler(GetDialogDeleteParameter);
            serverlog.AcceptRefreshParameter += new EventHandler(GetDialogRefreshParameter);
            LoggingFileServerLogDialog dialog = new LoggingFileServerLogDialog(serverlog);//委托回调
            dialog.Accept += new System.EventHandler(Win_accept);
            Window = new Window();
            Window.Title = "ServerLogs";
            Window.Width = 500;
            Window.Height = 500;
            Window.Content = dialog;
            Window.ShowDialog();
        }
        private void Win_accept(object sender, System.EventArgs e)
        {
            if (sender.ToString() == "ServerLogs")//子页面关闭触发机制
            {
                serverlog.AcceptAppendParameter -= new EventHandler(GetDialogAppendParameter);//因为子页面ViewModel是全局的。所以每次关闭时候需要注销事件。
                serverlog.AcceptDeleteParameter -= new EventHandler(GetDialogDeleteParameter);
                serverlog.AcceptRefreshParameter -= new EventHandler(GetDialogRefreshParameter);
                Window.Close();
            }
        }
子页面代码xaml:
/// <summary>
        /// the recipe name to other window
        /// </summary>
        public event EventHandler Accept;
        
        private void Cancel_Click(object sender, RoutedEventArgs e)
        {//子页面关闭按钮触发关闭
            Accept("ServerLogs", EventArgs.Empty);
        }
子页面ViewModel处理:
/// <summary>
        /// EventHandler
        /// </summary>
        public event EventHandler AcceptAppendParameter;

        /// <summary>
        /// EventHandler
        /// </summary>
        public event EventHandler AcceptDeleteParameter;
        /// <summary>
        /// EventHandler
        /// </summary>
        public event EventHandler AcceptRefreshParameter;
        /// <summary>
        /// Add server files
        /// </summary>
        private void ExecutionAppend()
        {
           AcceptAppendParameter(SelectedServerFile.Name, EventArgs.Empty);//子页面执行对应命令下发时进行委托处理,传递给父页面。
        }
举报

相关推荐

0 条评论