Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 焦点丢失时关闭弹出窗口_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 焦点丢失时关闭弹出窗口

C# 焦点丢失时关闭弹出窗口,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个包含列表视图的弹出窗口。ListView包含客户名称。单击搜索栏时弹出窗口打开。用户可以在搜索栏(文本框)中输入文本,并根据输入过滤Listview 我想在弹出窗口失去焦点时关闭它。但是,默认的“自动关闭”行为StaysOpen=“False”并不好,因为每次有人单击搜索栏时,它都会关闭弹出窗口 当弹出窗口失去焦点时,我如何始终关闭它,除非焦点转到搜索栏?也许您可以在搜索文本框上设置一些挂钩。当它接收到焦点时,它可以打开弹出窗口并设置StaysOpen=true。当文本框失去焦点时,它可

我有一个包含列表视图的弹出窗口。ListView包含客户名称。单击搜索栏时弹出窗口打开。用户可以在搜索栏(文本框)中输入文本,并根据输入过滤Listview

我想在弹出窗口失去焦点时关闭它。但是,默认的“自动关闭”行为
StaysOpen=“False”
并不好,因为每次有人单击搜索栏时,它都会关闭弹出窗口


当弹出窗口失去焦点时,我如何始终关闭它,除非焦点转到搜索栏?

也许您可以在搜索文本框上设置一些挂钩。当它接收到焦点时,它可以打开弹出窗口并设置
StaysOpen=true
。当文本框失去焦点时,它可以在弹出窗口上设置
StaysOpen=false

XAML代码:

 <Popup x:Name="pop" StaysOpen="False">

将事件处理程序添加到Leave事件(在控件焦点丢失时调用)。在此事件处理程序中,您可以检查具有焦点的新项目是否为搜索文本框

if(FormName.ActiveForm.ActiveControl==txtSearchBox)

然后根据搜索文本框是否有焦点,适当设置
StaysOpen

如何:

  • 将弹出的焦点丢失(离开,当控件不再是窗体的活动控件时发生)事件转发到父窗体
  • 如果当前焦点位于搜索栏上,则父窗体将不执行任何操作;否则,它将关闭弹出窗口