WPF入门2:Grid网格布局

转载源小宅博客:http://www.bilibili996.com/Course?id=5070796000084

一.Grid:

Grid顾名思义就是“网格”,以表格形式布局元素,对于整个面板上的元素进行布局,它的子控件被放在一个一个事先定义好的小格子里面,整齐配列。
Grid和其他各个Panel比较起来,功能最多也最为复杂。
要使用Grid,首先要向RowDefinitions和ColumnDefinitions属性中添加一定数量的RowDefinitions和 ColumnDefinitions元素,从而定义行数和列数。
而放置在Grid面板中的控件元素都必须显示采用Row和Column附加属性定义其放置所在的行和列,这两个属性的值都是从0开始的索引数,如果没有显式设置任何行或列,Grid将会隐式地将控件加入在第0行第0列。
由于Grid的组成并非简单的添加属性标记来区分行列,这也使得用户在实际应用中可以具体到某一单 元格中,所以布局起来就很精细了。
列宽和行高,分别可以在ColumnDefinition、RowDefinition里面指定Width、Height的值。

Grid的单元格可以是空的,一个单元格中可以有多个元素,而在单元格中元素是根据它们的Z顺序一个接着一个呈现的。
与Canvas一样,同一个单元格中 的子元素不会与其他元素交互布局,信息——它们仅仅是重叠而已。

Grid面板将元素分割到不可见的行列网格中。尽管可以在一个单元格中放置多个元素(这时这些元素会相互重叠),但在每个单元格中只放置一个元素通常更合理。
当然,在Grid单元格中的元素本身也可能是另一个容器,该容器组织它所包含的一组控件。

注意:尽管Grid面板被设计成不可见的,但可将Grid.ShowGridLines属性设置为True,从而更清晰的观察Grid面板,方便调试,可以更准确地控制Grid面板如何选择列宽和行高。

1.Grid基础效果:

在这里插入图片描述
代码:

<Window x:Class="WPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid Background="{DynamicResource {x:Static SystemColors.HotTrackBrushKey}}" Margin="50,50,50,50">
        <Button Content="按钮" HorizontalAlignment="Left" Margin="50,40,0,0" VerticalAlignment="Top" Width="240" Height="100" FontSize="20" FontWeight="Bold"></Button>
        <!--<Grid.ColumnDefinitions>
            <ColumnDefinition Width="5*"/>
            <ColumnDefinition Width="787*"/>
        </Grid.ColumnDefinitions>-->
    </Grid>
</Window>

2.Grid跨行跨列:

Row,Column:
在这里插入图片描述

代码:

<Window x:Class="WPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid >
        <!--格子Row,Column布局0,1,2-->
        <Rectangle Grid.Row="1" Grid.Column="1" Width="100" Height="100" Fill="Blue"></Rectangle>
        <Grid.RowDefinitions> 
            <RowDefinition Height="100"></RowDefinition>
            <RowDefinition Height="100"></RowDefinition>
            <RowDefinition Height="100"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="100"></ColumnDefinition>
        </Grid.ColumnDefinitions>
    </Grid>
</Window>

RowSpan,ColumnSpan:

在这里插入图片描述

代码:

<Window x:Class="WPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid >
        <!--格子RowSpan,ColumnSpan布局1,2,3-->
        <!--这里发现<1和〉3和1,3效果相同-->
        <Rectangle Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="2" Width="100" Height="100" Fill="Blue"></Rectangle>
        <Grid.RowDefinitions> 
            <RowDefinition Height="100"></RowDefinition>
            <RowDefinition Height="100"></RowDefinition>
            <RowDefinition Height="100"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="100"></ColumnDefinition>
        </Grid.ColumnDefinitions>
    </Grid>
</Window>

3.使用GridSplitter分割窗口:

在这里插入图片描述

代码:

<Window x:Class="WPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid ShowGridLines="True" Margin="0,0,0,1">
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="50"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Button Grid.Row="0" Grid.Column="0" Margin="5">LeftTop</Button>
        <Button Grid.Row="0" Grid.Column="2" Margin="5,5,-50,5">RightTop</Button>
        <Button Grid.Row="1" Grid.Column="0" Margin="5">LeftBottom</Button>
        <Button Grid.Row="1" Grid.Column="2" Margin="5,5,-50,5">RightBottom</Button>
        <GridSplitter Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" Width="30" VerticalAlignment="Stretch" HorizontalAlignment="Center" ShowsPreview="False"></GridSplitter>
    </Grid>
</Window>

4.UniformGrid:均布网格

在这里插入图片描述

代码:

<Window x:Class="WPFDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WPFDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid ShowGridLines="True" Margin="0,0,0,1">
        <UniformGrid Rows="2" Columns="2">
            <Button>第一个(0,0)</Button>
            <Button>第二个(0,1)</Button>
            <Button>第三个(1,0)</Button>
            <Button>第四个(1,1)</Button>
        </UniformGrid>
    </Grid>
</Window>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的GUI框架。它提供了强大的可视化开发工具和丰富的用户界面控件,可以实现高度定制化和交互性强的应用程序。 左控制(leftcontrol)键是计算机键盘上的一个键,通常位于键盘左下角。当按下左控制键时,它可以与其他键配合使用来执行某些特殊的操作。 悬浮窗是一种浮动在其他程序窗口之上的小窗口,它可以显示在屏幕的任意位置,并且可以拖动和调整大小。悬浮窗常常用于显示实时信息、通知或者快捷操作,提供了方便快捷的用户体验。 在WPF中,我们可以使用左控制键与悬浮窗相结合,实现一些特殊的操作。通过监测左控制键的按下和释放事件,我们可以在用户按下左控制键时显示悬浮窗,并在释放左控制键时隐藏悬浮窗。此外,我们还可以利用左控制键与其他键的组合,来执行一些快捷操作,如切换窗口状态、调整窗口大小等。 为了实现这个功能,我们可以使用WPF的事件处理机制来监测左控制键的按下和释放事件,并在事件处理程序中编写相应的逻辑来显示或隐藏悬浮窗。同时,我们也可以通过检测左控制键与其他键的组合按键来执行特定的操作。 总之,通过WPF和左控制键的组合,我们可以实现一些与悬浮窗相关的特殊操作,为用户提供更加便捷的交互方式。这样可以提高应用程序的可用性和用户体验,为用户带来更好的使用感受。 ### 回答2: WPF是一种用于创建Windows应用程序的开发框架,它可以让开发者以XAML(可扩展应用程序标记语言)和C#等编程语言来构建现代化的界面。在WPF中,可以使用悬浮窗(Floating Window)来实现一些特殊的窗口效果。 悬浮窗是一种可拖动和调整大小的窗口,它可以浮动在其他窗口之上或者作为一个独立的窗口存在。使用WPF的内置控件、布局和样式等功能,开发者可以轻松实现悬浮窗的各种特效和交互功能。 在WPF中,可以使用LeftControl方法来处理悬浮窗的左控件(即左侧控制面板)。左控件通常包含一些用于控制悬浮窗行为的按钮、选项或者其他控件。通过使用LeftControl方法,开发者可以对这些控件进行绑定、布局和事件处理等操作,从而实现悬浮窗的各种功能。 悬浮窗通常被用来展示一些重要信息、提供快速操作入口或者作为辅助工具来辅助主窗口的工作。在WPF中,通过使用LeftControl方法,可以方便地添加左控件来增强悬浮窗的功能和用户体验。 总之,WPF提供了丰富的功能和灵活的开发方式,使得开发者可以轻松创建悬浮窗并实现各种交互效果。通过使用LeftControl方法,开发者可以对悬浮窗的左控件进行定制和操作,使其更加符合应用程序的需求。 ### 回答3: WPF (Windows Presentation Foundation)是一种用于创建 Windows 客户端应用程序的技术框架。WPF 提供了一种基于 XAML(可扩展应用程序标记语言)和 .NET 语言的方式来构建现代化的、精美的图形用户界面。WPF 的一个特点是可以轻松地创建自定义控件和交互方式,使应用程序具有更强大和个性化的功能。 悬浮窗指的是在应用程序中可以随意移动、调整大小的浮动窗口。在 WPF 中,可以通过使用 Popup 控件实现类似的效果。Popup 控件类似于传统 Windows Forms 应用程序中的模式窗口或弹出对话框,但它可以自定义样式和布局,并且可以根据需要随意移动。 要在 WPF 中创建悬浮窗,首先需要使用 Popup 控件作为容器。可以在 XAML 中定义 Popup 控件的样式,并将其放置在需要浮动的位置。使用控件的 MouseDown 或 MouseMove 事件来实现鼠标点击或拖动的功能,从而移动悬浮窗。可以通过控制 Popup 的 IsOpen 属性来控制窗口的显示和隐藏。 而 "meet:leftcontrol" 是一种键盘事件触发的方式,表示当按下左控制(Left Control)键时会触发某个动作。可以通过处理键盘事件的方式来实现相关逻辑,在按下左控制键时显示或隐藏悬浮窗。 总结来说,通过使用 WPF 的 Popup 控件以及处理键盘事件,可以实现一个悬浮窗。这个悬浮窗可以使用鼠标拖动、调整大小,并且可以通过左控制键来触发显示或隐藏的动作。这样的悬浮窗可以为应用程序提供更丰富、灵活的用户交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值