首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【愚公系列】2023年09月 WPF控件专题 XAML介绍
2
【愚公系列】2023年09月 WPF控件专题 WPF应用程序组成
3
【愚公系列】2023年09月 WPF控件专题 Window窗体属性和事件
4
【愚公系列】2023年09月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
5
【愚公系列】2023年09月 WPF控件专题 Button控件详解
6
【愚公系列】2023年09月 WPF控件专题 RadioButton控件详解
7
【愚公系列】2023年09月 WPF控件专题 CheckBox控件详解
8
【愚公系列】2023年09月 WPF控件专题 Image控件详解
9
【愚公系列】2023年09月 WPF控件专题 Border控件详解
10
【愚公系列】2023年09月 WPF控件专题 ComboBox控件详解
11
【愚公系列】2023年09月 WPF控件专题 ListBox控件详解
12
【愚公系列】2023年09月 WPF控件专题 DatePicker控件详解
13
【愚公系列】2023年09月 WPF控件专题 Calendar控件详解
14
【愚公系列】2023年09月 WPF控件专题 Slider控件详解
15
【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
16
【愚公系列】2023年10月 WPF控件专题 StackPanel控件详解
17
【愚公系列】2023年10月 WPF控件专题 WrapPanel控件详解
18
【愚公系列】2023年10月 WPF控件专题 DockPanel控件详解
19
【愚公系列】2023年10月 WPF控件专题 Canvas控件详解
20
【愚公系列】2023年10月 WPF控件专题 Grid控件详解
21
【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解
22
【愚公系列】2023年10月 WPF控件专题 Expander控件详解
23
【愚公系列】2023年10月 WPF控件专题 TabControl控件详解
24
【愚公系列】2023年10月 WPF控件专题 Frame控件详解
25
【愚公系列】2023年10月 WPF控件专题 ListView控件详解
26
【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解
27
【愚公系列】2023年10月 WPF控件专题 Menu控件详解
28
【愚公系列】2023年10月 WPF控件专题 ContextMenu控件详解
29
【愚公系列】2023年10月 WPF控件专题 TreeView控件详解
30
【愚公系列】2023年10月 WPF控件专题 ToolBar控件详解
31
【愚公系列】2023年10月 WPF控件专题 ToolBarTray控件详解
32
【愚公系列】2023年10月 WPF控件专题 StatusBar控件详解
33
【愚公系列】2023年11月 WPF控件专题 MediaElement控件详解
34
【愚公系列】2023年11月 WPF控件专题 RichTextBox控件详解
35
【愚公系列】2023年11月 WPF控件专题 GridView控件详解
36
【愚公系列】2023年11月 WPF控件专题 Rectangle控件详解
37
【愚公系列】2023年11月 WPF控件专题 Popup控件详解
38
【愚公系列】2023年11月 WPF控件专题 OpenFileDialog控件详解
39
【愚公系列】2023年11月 WPF控件专题 SaveFileDialog控件详解
40
【愚公系列】2023年11月 WPF控件专题 RepeatButton控件详解
41
【愚公系列】2023年11月 WPF控件专题 Ellipse控件详解
42
【愚公系列】2023年11月 WPF控件专题 Polygon控件详解
43
【愚公系列】2023年11月 WPF控件专题 Path控件详解
44
【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解
45
【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解
46
【愚公系列】2023年11月 WPF控件专题 Validation控件详解
47
【愚公系列】2023年11月 WPF控件专题 Page控件详解
48
【愚公系列】2023年11月 WPF控件专题 PrintDialog控件详解
49
【愚公系列】2023年11月 WPF控件专题 Track控件详解
50
【愚公系列】2023年11月 WPF控件专题 Polyline控件详解

【愚公系列】2023年11月 WPF控件专题 Popup控件详解

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。

原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。

自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

🚀一、Popup控件详解

WPF中的Popup控件是一种轻量级的容器,可以在其内容部分显示其他控件。Popup控件在显示和隐藏时没有边框或标题栏,通常用于显示上下文菜单、浮动工具栏、弹出窗口等。

以下是一个简单的Popup示例:

代码语言:html
复制
<Button Content="Click me">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Open" Click="MenuItem_Click"/>
            <MenuItem Header="Save" Click="MenuItem_Click"/>
            <MenuItem Header="Exit" Click="MenuItem_Click"/>
        </ContextMenu>
    </Button.ContextMenu>
</Button>

<Popup Name="popup" StaysOpen="False">
    <Border Background="White" BorderBrush="Gray" BorderThickness="1">
        <StackPanel>
            <TextBlock Text="Popup Content"/>
            <Button Content="Close" Click="Button_Click"/>
        </StackPanel>
    </Border>
</Popup>

在上述示例中,我们将一个ContextMenu附加到Button控件上,当用户右击按钮时,ContextMenu会弹出。我们还定义了一个Popup控件,在其中放置了一个Border和一个StackPanel,该StackPanel包括一些文本和一个按钮。在Button_Click事件处理程序中,我们可以通过设置popup的IsOpen属性来显示或隐藏Popup控件。

代码语言:java
复制
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
    popup.PlacementTarget = (UIElement)sender;
    popup.IsOpen = true;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    popup.IsOpen = false;
}

在MenuItem_Click事件处理程序中,我们设置PlacementTarget属性来指定Popup的放置目标,并将IsOpen属性设置为true。在Button_Click事件处理程序中,我们将IsOpen属性设置为false,以关闭Popup控件。

🔎1.属性介绍

Popup控件是一种用于显示信息或操作的弹出式窗口,下面是一些常用的属性:

  1. IsOpen:指定Popup控件是否处于打开状态。
  2. PlacementTarget:指定Popup控件的父级控件。
  3. Placement:指定Popup控件相对于PlacementTarget控件的位置。
  4. StaysOpen:指定Popup控件在失去焦点时是否关闭。
  5. AllowsTransparency:指定Popup控件是否能够透明显示。
  6. PlacementRectangle:指定Popup控件相对于PlacementTarget控件的矩形区域。
  7. HorizontalOffset:指定Popup控件相对于PlacementTarget控件的水平偏移量。
  8. VerticalOffset:指定Popup控件相对于PlacementTarget控件的垂直偏移量。
  9. PopupAnimation:指定Popup控件打开和关闭时的动画效果。
  10. IsEnabled:指定Popup控件是否可用。
  11. Width:指定Popup控件的宽度。
  12. Height:指定Popup控件的高度。
  13. Child:指定Popup控件的内容。
  14. Focusable:指定Popup控件是否可以获取焦点。
  15. PopupStyle:指定Popup控件的样式。

🔎2.常用场景

Popup控件在WPF中常用于以下场景:

  1. 提供弹出式菜单:在用户点击某个按钮或控件时,弹出菜单供用户选择操作,选择完成后,菜单自动隐藏。
  2. 提供弹出式窗口:在用户需要输入某些数据或进行某些操作时,弹出窗口供用户完成操作。
  3. 提供提示信息:在需要向用户提供某些提示信息时,弹出窗口可以提供一些简单的文本信息。
  4. 弹出式对话框:在需要向用户进行确认或选择时,弹出式对话框可以提供一些交互式的选项供用户选择。

Popup控件可以实现非常灵活的弹出式界面,通过动态绑定Popup的DataContext属性,可以实现动态绑定弹出式界面的数据。同时,Popup控件在WPF中也支持动画效果的设置,可以让弹出式界面变得非常美观。

🔎3.具体案例

下面是一个简单的WPF Popup控件的案例:

在WPF窗体中添加一个按钮,点击该按钮会显示一个Popup控件,该控件中包含一个Label和一个TextBox,用户可以在TextBox中输入文本,然后单击Popup控件外的任何区域,Popup控件就会关闭并将用户输入的文本显示在窗体中。

  1. 在WPF窗体中添加一个按钮和Popup控件。
代码语言:html
复制
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    
    <StackPanel Margin="10">
        <Button Content="Show Popup" Click="Button_Click"/>
        
        <Popup x:Name="popup" Placement="Center" StaysOpen="False">
            <StackPanel Width="200" Background="White" Margin="10">
                <Label Content="Enter text:"/>
                <TextBox x:Name="textBox"/>
            </StackPanel>
        </Popup>
    </StackPanel>
</Window>
  1. 在窗体的按钮单击事件中打开Popup控件。
代码语言:java
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    popup.IsOpen = true;
}
  1. 添加窗体的PreviewMouseDown事件和Popup控件的LostFocus事件,以便在单击Popup控件外的任何区域时关闭Popup控件并将用户输入的文本显示在窗体中。
代码语言:java
复制
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    if (!popup.IsMouseOver && popup.IsOpen)
    {
        popup.IsOpen = false;
        MessageBox.Show(textBox.Text);
    }
}

private void Popup_LostFocus(object sender, RoutedEventArgs e)
{
    popup.IsOpen = false;
    MessageBox.Show(textBox.Text);
}

完整的WPF Popup控件案例代码:

代码语言:html
复制
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        PreviewMouseDown="Window_PreviewMouseDown">
    
    <StackPanel Margin="10">
        <Button Content="Show Popup" Click="Button_Click"/>
        
        <Popup x:Name="popup" Placement="Center" StaysOpen="False" LostFocus="Popup_LostFocus">
            <StackPanel Width="200" Background="White" Margin="10">
                <Label Content="Enter text:"/>
                <TextBox x:Name="textBox"/>
            </StackPanel>
        </Popup>
    </StackPanel>
</Window>
代码语言:java
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    popup.IsOpen = true;
}

private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    if (!popup.IsMouseOver && popup.IsOpen)
    {
        popup.IsOpen = false;
        MessageBox.Show(textBox.Text);
    }
}

private void Popup_LostFocus(object sender, RoutedEventArgs e)
{
    popup.IsOpen = false;
    MessageBox.Show(textBox.Text);
}

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

下一篇
举报
领券