【发布时间】:2009-12-11 08:26:59
【问题描述】:
我有一个包含 ListView 的弹出窗口。 ListView 包含客户姓名。单击搜索栏时会打开弹出窗口。用户可以在搜索栏(TextBox)中输入文本,Listview会根据输入进行过滤。
我想在弹出窗口失去焦点时关闭它。但是,默认的“自动关闭”行为StaysOpen="False" 并不好,因为它会在每次有人点击搜索栏时关闭弹出窗口。
如何在弹出窗口失去焦点时始终关闭它,除非焦点转到搜索栏?
【问题讨论】:
我有一个包含 ListView 的弹出窗口。 ListView 包含客户姓名。单击搜索栏时会打开弹出窗口。用户可以在搜索栏(TextBox)中输入文本,Listview会根据输入进行过滤。
我想在弹出窗口失去焦点时关闭它。但是,默认的“自动关闭”行为StaysOpen="False" 并不好,因为它会在每次有人点击搜索栏时关闭弹出窗口。
如何在弹出窗口失去焦点时始终关闭它,除非焦点转到搜索栏?
【问题讨论】:
也许您可以在搜索文本框上放置一些钩子。当它接收到焦点时,它可以打开弹出窗口并设置StaysOpen = true。当文本框失去焦点时,可以在弹窗上设置StaysOpen = false。
XAML 代码:
<Popup x:Name="pop" StaysOpen="False">
【讨论】:
向 Leave 事件添加事件处理程序(在失去对控件的焦点时调用)。在此事件处理程序中,您可以检查具有焦点的新项目是否是搜索文本框。
if(FormName.ActiveForm.ActiveControl == txtSearchBox)
然后根据搜索文本框是否有焦点适当地设置StaysOpen。
【讨论】:
怎么样:
【讨论】: