我有一个包含ListView的弹出窗口。 ListView包含客户名称。单击搜索栏时弹出窗口。用户可以在搜索栏(TextBox)中输入文本,并根据输入过滤Listview。
我想在失去焦点时关闭弹出窗口。但是,默认的“自动关闭”行为StaysOpen="False"
并不好,因为只要有人点击搜索栏,它就会关闭弹出窗口。
除非焦点转到搜索栏,否则如何在失去焦点时关闭Popup?
答案 0 :(得分:10)
也许你可以在搜索文本框中添加一些钩子。当它获得焦点时,它可以打开弹出窗口并设置StaysOpen = true
。当文本框失去焦点时,它可以在弹出窗口中设置StaysOpen = false
。
XAML代码:
<Popup x:Name="pop" StaysOpen="False">
答案 1 :(得分:1)
向Leave事件添加一个事件处理程序(当控件的焦点丢失时调用)。在此事件处理程序中,您可以检查具有焦点的新项是否是搜索文本框。
if(FormName.ActiveForm.ActiveControl == txtSearchBox)
然后根据搜索文本框是否具有焦点,适当地设置StaysOpen
。
答案 2 :(得分:1)
怎么样: