【问题标题】:UserControl window won't close用户控制窗口不会关闭
【发布时间】:2016-06-13 18:57:31
【问题描述】:

我的一个 UserControl Windows 有问题。 我有一个 MainWindow,当出现特定的情况时,另一个 UserControl 将打开。 它有两个发送命令的按钮,之后它应该被关闭。 现在它只打开窗口并发送命令,但之后不会关闭它。 我希望你能帮助我。 代码: xml:

C#: 打开 UserControl 的代码:

Window window = new Window();
window.Content = new MsgBox();
window.ShowDialog();

按钮声明: 公共委托命令 OkBtn { 获取;放; }

按钮功能添加到按钮:

OkBtn = new DelegateCommand<object>(OkBtnFkt);

在这个 Buttonfunction 中应该有类似:window.Close();

我尝试过的:

Window.Close(); 通过调度程序将 Window.close 发送到 UI

【问题讨论】:

  • 您可以显示任何代码吗?
  • 您仍然没有显示足够的代码让我们完全理解发生了什么。例如,您的MsgBox(假定为 UserControl)如何关闭其父级(Window)?如果你想要一个具有自定义外观的消息框,为什么不子类化 Window 而不是 UserControl?
  • 对于缺少的部分,我深表歉意。父 UserControl 未关闭。它仍在后台,但等待新 UserControl 中的操作。由于公司,我必须使用 UserControl

标签: c# wpf


【解决方案1】:

您可以设置窗口的 DialogResult。您实际上拥有的是一个内部带有 UserControl 的窗口。您可以制作一个 MsgBoxWindow 从 Window 派生。将您的控件和一个关闭按钮放在里面。然后,如果单击关闭按钮,您可以设置 DialogResult。

https://msdn.microsoft.com/en-us/library/system.windows.window.dialogresult(v=vs.110).aspx

你为什么不用MessageBox呢?

【讨论】:

  • 我的“窗口”是一个用户控件,我必须关闭它。我还在这个问题中添加了一些代码
  • 我需要一个设计好的消息框。它应该用于不同的事情。但确实,我只是想要一个设计好的 MessageBox
【解决方案2】:

【讨论】:

  • 那么到底是无法从usercontrol获取父窗口的引用的问题?
  • 是的,有点。应用程序认为,它仍在主窗口内,因此无法执行关闭调用。由于 Button 的命令参数,我不得不选择新创建的窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多