Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
Wpf 如何在StaysOpen为False的弹出窗口中单击控件_Wpf - Fatal编程技术网

Wpf 如何在StaysOpen为False的弹出窗口中单击控件

Wpf 如何在StaysOpen为False的弹出窗口中单击控件,wpf,Wpf,我有一个弹出窗口,里面有一个列表视图。我想将StaysOpen设置为False,这样当我点击离开弹出窗口时,它就会正确关闭。但是,这意味着所有鼠标事件都被截获。因此,我的ListView中没有任何鼠标事件 这是我目前的设置。我已经删除了所有的样式,使它更容易看到发生了什么 <Popup Name="puSearchResults" StaysOpen="False" AllowsTransparency="True" LostFocus="

我有一个弹出窗口,里面有一个列表视图。我想将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时才起作用,但如果我单击“离开”,弹出窗口不会消失


想法?

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

然后你可以这样做:

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

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


类似的问题应该会有所帮助:

当我将StaysOpen设置为true时,它会自动将IsOpen设置为false,因此我必须将其设置为true才能看到弹出窗口。因此,您可以看到弹出窗口闪烁。此外,当您在ListView上悬停时,弹出窗口认为您不再在弹出窗口内。