none
listboxitem里面的图片mouse单击无法弹出popup RRS feed

  • 问题

  •                         <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <Grid Margin="0,0,2,5">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="2*"/>
                                                <ColumnDefinition Width="2*"/>
                                                <ColumnDefinition Width="*"/>
                                            </Grid.ColumnDefinitions>
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="*"/>
                                                <RowDefinition Height="*"/>
                                                <RowDefinition Height="3*"/>
                                            </Grid.RowDefinitions>
                                            <Image Grid.Row="1" Grid.ColumnSpan="2" Grid.RowSpan="2" HorizontalAlignment="Left" VerticalAlignment="Bottom"  Height="40" Source="{Binding imagePath}" MouseLeftButtonUp="Image_MouseLeftButtonDown" />

                                        </Grid>

    private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
     {
                popSendMsg.PlacementTarget = sender as Image;
                popSendMsg.IsOpen = true;
      }

     <Popup x:Name="popSendMsg" StaysOpen="False"
                    IsOpen="False"
                    AllowsTransparency="True"
                    PopupAnimation="Fade" Placement="Top"
                   HorizontalOffset="10">
                <Grid>
                    <Button Name="btSendInPopup"
                            Width="60" Height="30"
                            Padding="1.6" FontSize="16" Click="btSendInPopup_Click">发消息</Button>
                </Grid>
            </Popup>

    代码如上,在image中相应鼠标左键,弹出popup,但是发现点击popup以外的区域始终无法自动关闭

    但是单独弄一个图片在listbox外面又可以实现。

    我试过mouseover的方法也可以再listbox中实现。不知道listboxitem对鼠标左键点击做了什么额外操作?

    2016年6月7日 8:42

答案

全部回复

  • 你好 wpf萌新:

    不是很能理解你的需求,你能写一个简单的Demo描述你的问题吗?包括你"单独弄一个图片"实现出来的效果和"用了ListBox"之后却无法实现的效果。

    2016年6月7日 9:52
  • 需求很简单啊,就是单击listboxitem里面的图片,能弹出popup,并可以正常关闭popup

    上面的代码都可以直接用

    问题有两种情况 1.给图片添加左键点击事件,不能弹出popup,一闪就消失了

    2.给图片添加左键up事件,可以弹出popup, 但无法自动关闭

    2016年6月8日 2:58
  • 自动关闭是指?
    2016年6月8日 3:50
  • 就是popup不能正常显示,我吧popup的stayopen设为false,左键点击一瞬间就消失了
    2016年6月8日 5:04
  • 你好 wpf萌新

    经过分析,并不是ListBox对鼠标事件做了什么,而是Popup的IsOpen属性的切换机制的问题。

    你说的自动关闭应该指的是“Popup的IsOpen自动设置为false”的过程,该过程似乎与目标元素的Focus状态有关。而ListBox中元素的Focus状态有点奇怪,具体我也没有深入研究。

    你可以参考:http://stackoverflow.com/questions/25315116/why-does-wpf-popup-isopen-true-stay-open-from-listbox

    2016年6月8日 5:58
  • 不行哦,他那种方法彻底让listboxitem无法获取任何焦点了

    我的目的是点击listboxitem中的图片,可以弹出popup啊

    2016年6月8日 7:23
  • 这跟代码不代码没关系吧,你自己试试弄个popup,点击listboxitem中的图片弹出popup,看能否正常显示和关闭
    2016年6月8日 7:46
  • 这样实际上回避了问题,把image点击换成了button的点击,其实我试过,button的click事件是可以实现的,但问题仍然存在,mousedown在listbox中无法正常弹出关闭popup
    2016年6月8日 15:03
  • ?????


    • 已建议为答案 [-] 2016年6月8日 17:35
    • 已标记为答案 wpf萌新 2016年6月14日 2:04
    • 已编辑 [-] 2018年1月11日 13:00
    2016年6月8日 17:35