博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于WPF中Popup控件的小记
阅读量:5038 次
发布时间:2019-06-12

本文共 2075 字,大约阅读时间需要 6 分钟。

在wpf开发中,常需要在鼠标位置处弹出一个“提示框”(在此就以“提示框”代替吧),通过“提示框”进行信息提示或者数据操作,如果仅仅是提示作用,使用ToolTip控件已经足够,但是有些是需要在弹出的框中有操作数据的功能,如弹出框包含一棵树或者列表,此时ToolTip就没法实现了,因为ToolTip只能起到显示的作用,也许有人会有弹出对话框的形式,这是一种办法,但是要让对话框总是显示在鼠标的位置,并且对话框的大小需要根据显示内容的改变(如树或列表的展开与收缩)而动态改变的话,实现起来会比较麻烦。通过进一步的探讨,原来使用Popup控件是那么的简单和实用,它在许多方面和ToolTip 控件一样,也是单一内容,但是它可以包含任何WPF元素,该内容存储在Popup.Child属性中,而不像ToolTip控件存储在ToolTip.Content属性中。另外,和ToolTip控件一样Popup控件也可以延伸出窗口的边界,可以使用IsOpen属性显示或隐藏Popup控件。跟ToolTip相比,Popup会有以下几个比较重要的特点:

(1)ToolTip可以自动显示,而Popup控件永远不会自动显示,为了显示Popup控件必须设置IsOpen属性。

(2)ToolTip可以自动消失,但是Popup有点不同的就是,在默认情况下,Popup.StaysOen属性被设置为True,并且Popup控件会一直显示,直到显式地将IsOpen属性设置为False。如果将Popup.StaysOpen属性设置为False,当用户在其他地方单击鼠标时,Popup控件就会消失。

(3)如果Popup控件的IsOpen属性设置为True时,可以通过Popup控件的PopupAnimation属性设置弹出方式,Placement属性设置弹出位置,如Placement="Mouse",表示在鼠标位置处弹出“提示框”

(4)Popup控件不和任何控件相关联,无论在哪定义Popup标签都可以。

部分XAML代码:

  <TextBox Name="my_text" Grid.Row="0" Grid.Column="3" Height="25" Width="140" IsReadOnly="True" HorizontalAlignment="Left" Margin="4,0,0,0" />

      <Button Grid.Row="0" Grid.Column="3" Width="20" Height="25" Content="..." HorizontalAlignment="Right" Margin="0,0,10,0"  Click="Button_Click" />
            
       <Popup Name="popup" AllowsTransparency="True" FlowDirection="LeftToRight"
               PopupAnimation="Fade" Placement="Mouse" StaysOpen="False">
                <Border Background="Transparent">
                    <!--定义边框-->
                    <StackPanel>

        <!--local:ControlCheckPointTree为自定义控件树-->

                        <local:ControlCheckPointTree x:Name="myTree" IsShowCheck="True" onSelectedItemChanged="ControlCheckPointTree_onSelectedItemChanged" MouseLeave="ControlCheckPointTree_MouseLeave"/>
                    </StackPanel>
                </Border>
         </Popup>

后台代码:

   private void Button_Click(object sender, RoutedEventArgs e)        

  {            

    popup.IsOpen = true;        

  }

       private void ControlCheckPointTree_onSelectedItemChanged(object sender, EventArgs e)        

  {            

     my_text.Text = "";            

    foreach (string str in myTree.SelectedItemNames)            

     {                

       my_text.Text += str;            

     }        

   }

        private void ControlCheckPointTree_MouseLeave(object sender, MouseEventArgs e)        

   {            

      popup.IsOpen = false;        

   }

转载于:https://www.cnblogs.com/simpleZone/p/3459049.html

你可能感兴趣的文章
「Foundation」集合
查看>>
算法时间复杂度
查看>>
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
[转载]JDK的动态代理深入解析(Proxy,InvocationHandler)
查看>>
centos7 搭建vsftp服务器
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>
Web框架和Django基础
查看>>
python中的逻辑操作符
查看>>
CSS兼容性常见问题总结
查看>>
HDU 1548 A strange lift (Dijkstra)
查看>>
每天一个小程序—0005题(批量处理图片大小)
查看>>
C# 启动进程和杀死进程
查看>>
tcp实现交互
查看>>
IIS的各种身份验证详细测试
查看>>
JavaScript特效源码(3、菜单特效)
查看>>