ImageMouseLeftButtonDown上的WPF Popup控件立即消失

时间:2011-04-18 13:04:06

标签: wpf popup

我的弹出窗口定义如下,

<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。除此之外,弹出窗口一出现就会消失。出了什么问题?

1 个答案:

答案 0 :(得分:0)

我认为发生的事情是MouseLeftButtonUp事件在Mouse未超过Popup时触发。尝试按住鼠标按钮并移动鼠标,使其位于弹出窗口上方以查看它是否保持打开状态,然后释放鼠标按钮。

您可以通过设置StaysOpen="True"或在click eventhandler或MouseButtonUp事件处理程序中设置IsOpen=true来解决此问题。

同样使用您的图片示例,您可以在弹出式视觉树中的图像正上方有一个透明区域,当弹出窗口打开时,它会“捕获”MouseUp事件。您必须更改放置选项并将该区域绑定到图像的宽度和高度属性。