簡體   English   中英

Mouse.Capture返回false並失敗

[英]Mouse.Capture returns false and fails

為了在WPF中模擬模式對話框,我顯示一個Window並調用: Mouse.Capture(dialogBoxArea, CaptureMode.SubTree);

調用返回false

Mouse.Capturednull dialogBoxArea.VisibilityVisibility.Visible dialogBoxArea.IsEnabledtrue

如果第二次再次調用該行,則返回true並正確捕獲鼠標。

我可能缺少什么條件阻止捕獲工作?

編輯

到目前為止,這是我嘗試過的。

        if (Mouse.Captured != null)
        {
            // Not called, so presumably, nothing has already captured the mouse
            MessageBox.Show("already captured");
        }

        if (dialogBoxArea.Visibility != Visibility.Visible)
        {
            // Not called
            MessageBox.Show("not visible");
        }

        if (!dialogBoxArea.IsEnabled)
        {
            // Not called
            MessageBox.Show("not enabled");
        }

        // According to documentation, this should release mouse capture from anything that holds it
        Mouse.Capture(null);

        // Attempt to capture the mouse
        if (!Mouse.Capture(dialogBox, CaptureMode.SubTree))
        {
            // This is called
            Mouse.Capture(null);
            Mouse.Capture(dialogBox, CaptureMode.SubTree);
        }

第一次迭代時,我會與您的客戶交流。

以下內容將打開一個對話框選項窗口,該窗口始終位於原始窗口的頂部,並阻止對其的調用,但絲毫不妨礙整體執行。 如果您的客戶看到了這種行為,他可能會對此感到滿意。

namespace StackoverflowExample
{
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
    }
    void NewWindowAsDialog(object sender, RoutedEventArgs e)
    {
      Window myOwnedDialog = new Window();
      myOwnedDialog.Owner = this;
      myOwnedDialog.ShowDialog();
    }
  }
}

我稍后將在此處發布另一個選項,該選項將說明如何將窗口加載到xaml的細分(網格等)中。 您可以根據加載到該部門的內容過濾所有其他呼叫,而不是過濾mouscall。 您的過濾可能會遇到邏輯樹和視圖樹的問題-如果您是從頭開始創建自己的模板,則只想看一下樹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM