[英]Mouse.Capture returns false and fails
為了在WPF中模擬模式對話框,我顯示一個Window並調用: Mouse.Capture(dialogBoxArea, CaptureMode.SubTree);
調用返回false
。
Mouse.Captured
為null
。 dialogBoxArea.Visibility
是Visibility.Visible
。 dialogBoxArea.IsEnabled
為true
。
如果第二次再次調用該行,則返回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.