我的弹出窗口定义如下,
<Popup x:Name="popLines"
Placement="Bottom"
IsOpen="False"
Width="145" Height="42"
StaysOpen="False"
PopupAnimation="Fade"
AllowsTransparency="True"
HorizontalOffset="-2" VerticalOffset="0">
<Grid Margin="2">
<Path StrokeThickness="0.7" StrokeLineJoin="Round" Fill="#FFFFFFFF" Stretch="Fill" Stroke="Black" Data="M6.5,0.5 L30.167,0.5 30.167,8.4999992 190.16701,8.4999992 190.16701,44.166001 0.5,44.166001 0.5,8.4999992 6.5,8.4999992 6.5,0.5 z">
</Path>
<Grid>
<StackPanel Orientation="Horizontal">
<TextBox BorderBrush="Black" BorderThickness="0.5" Margin="5,10,2,2" Width="110" Height="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ToolTip="Excel File Path"></TextBox>
<Image Source="/App_Desktop;component/Resources/save.png" Margin="2,10,5,2" Width="16" Height="16"></Image>
</StackPanel>
</Grid>
</Grid>
</Popup>
当图片IsOpen=true
事件触发时,我设置MouseLeftButtonDown
。除此之外,弹出窗口一出现就会消失。出了什么问题?
答案 0 :(得分:0)
我认为发生的事情是MouseLeftButtonUp事件在Mouse未超过Popup时触发。尝试按住鼠标按钮并移动鼠标,使其位于弹出窗口上方以查看它是否保持打开状态,然后释放鼠标按钮。
您可以通过设置StaysOpen="True"
或在click eventhandler或MouseButtonUp事件处理程序中设置IsOpen=true
来解决此问题。
同样使用您的图片示例,您可以在弹出式视觉树中的图像正上方有一个透明区域,当弹出窗口打开时,它会“捕获”MouseUp事件。您必须更改放置选项并将该区域绑定到图像的宽度和高度属性。