如何使用StaysOpen将弹出窗口内的控件单击为False

时间:2014-04-16 17:15:49

标签: wpf

我的Popup里面有ListView。我想将StaysOpen设置为False,以便在我点击弹出窗口时正确关闭它。但是,这意味着所有鼠标事件都被截获。因此,我的ListView中没有任何鼠标事件。

这是我目前的设置。我已删除所有样式,以便更容易查看正在进行的操作。

 <Popup Name="puSearchResults" StaysOpen="False"
            AllowsTransparency="True"
            LostFocus="puSearchResults_LostFocus" 
            LostKeyboardFocus="puSearchResults_LostKeyboardFocus" 
            LostMouseCapture="puSearchResults_LostMouseCapture" >
   <ListView Name="lvSearchResults" 
             MouseLeftButtonDown="lbSearchResults_MouseLeftButtonDown"
             SelectionChanged="lvSearchResults_SelectionChanged"/>
</Popup>

在这种情况下,MouseLeftButtonDown仅在我将StaysOpen设置为True时有效,但如果我点击则Popup不会消失。

想法?

1 个答案:

答案 0 :(得分:-1)

我会将鼠标事件添加到ListView或ListView的数据模板中的对象。

然后你可以这样做:

private void lvSearchResults_MouseEnter(object sender, MouseEventArgs e)
{
  puSearchResults.StaysOpen = true;
}

private void lvSearchResults_MouseLeave(object sender, MouseEventArgs e)
{
  puSearchResults.StaysOpen = false;
}

修改

应该有所帮助的类似问题:Close Wpf Popup On click of item of its own control template