【问题标题】:How do I focus a modal WPF Window when the main application window is clicked单击主应用程序窗口时如何聚焦模态 WPF 窗口
【发布时间】:2010-11-03 06:56:47
【问题描述】:

我有我的 MainApplication 窗口,它使用 .ShowDialog() 启动一个新窗口,因此它是模态的。

UploadWindow uploadWindow = new UploadWindow();
uploadWindow.ShowDialog();

现在用户经常打开这个窗口,它可能会在其他窗口下丢失。当单击 MainApplication 时,您会收到类似错误的哔声并且无法与之交互,因此模态窗口按预期正确阻塞,但如果模态窗口此时聚焦于向用户显示它会很好仍然开放。

目前它看起来好像 MainApplication 窗口已锁定。

【问题讨论】:

    标签: c# wpf window


    【解决方案1】:

    现在你可以设置Topmost = true

    var uploadWindow = new UploadWindow();
    uploadWindow.Topmost = true;
    

    【讨论】:

      【解决方案2】:

      由于我使用的是 MVVM,因此我不会从 GUI 创建代码。我用过这个。

      var uploadWindow = new UploadWindow();
      uploadWindow.Owner = Application.Current.MainWindow;
      uploadWindow.ShowDialog();
      

      【讨论】:

        【解决方案3】:

        如果上述所有解决方案都尝试过但仍然面临同样的问题 那么这是您经过测试和验证的解决方案 转到您的窗口 xaml 并添加

        ResizeMode = "NoResize"

        【讨论】:

        • 这是否会导致底层模式对话框成为焦点?
        • 是的,我遇到了同样的问题,尝试了所有建议,但对我不起作用,然后简单地更改了 ResizeMode 和 objForm.ShowDialog();工作
        【解决方案4】:

        我有问题,我不能用这个,如果有人有同样的问题,你可以用

        Window.GetWindow(this)
        

        【讨论】:

          【解决方案5】:

          尝试设置对话框的所有者:

          var uploadWindow = new UploadWindow();
          uploadWindow.Owner = this;
          uploadWindow.ShowDialog();
          

          【讨论】:

          • 我觉得 Owner 属性默认没有设置有点奇怪。不过感谢您的提示,总有一天会变得有用。
          • ← 这个。说真的,this 是什么意思?
          • @ColonelPanic 是的,this 只能在窗口内工作,而不是 UserControl 或其他东西。 Window.GetWindow(this) 应该可以解决问题。
          猜你喜欢
          • 1970-01-01
          • 2011-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多