柚子快報(bào)激活碼778899分享:C#之WPF學(xué)習(xí)之路(3)
柚子快報(bào)激活碼778899分享:C#之WPF學(xué)習(xí)之路(3)
目錄
布局控件
布局控件概述
Panel基類
Grid控件(網(wǎng)格布局)
一、左右排列
二、上下排列
三、上下左右排列
四、跨列排列
五、固定列寬
六、調(diào)整行高和列寬
七、Grid顯示網(wǎng)格線
總結(jié)
UniformGrid控件(均分布局)
StackPanel控件(棧式布局)
WrapPanel控件(瀑布流布局)
DockPanel控件(停靠布局)
VirtualizingStackPanel 類
Canvas控件(絕對布局)
Border控件(邊框布局)
GridSplitter分割窗口
布局控件
布局控件概述
在C#中使用WPF(Windows Presentation Foundation)進(jìn)行布局控件時(shí),你可以利用XAML(Extensible Application Markup Language)和代碼來創(chuàng)建靈活、響應(yīng)式的用戶界面。WPF提供了多種布局控件,可以幫助你輕松地管理和設(shè)計(jì)界面布局。
以下是一些常用的WPF布局控件以及它們的概述:
Grid(網(wǎng)格):網(wǎng)格控件允許你創(chuàng)建靈活的行和列布局,可以將控件按照網(wǎng)格中的行和列進(jìn)行排列。StackPanel(堆棧面板):堆棧面板控件允許你按照水平或垂直方向?qū)丶M(jìn)行堆疊排列,依次放置在同一個(gè)方向上。WrapPanel(自動(dòng)換行面板):自動(dòng)換行面板控件類似于堆棧面板,但是在控件放置到一行后會(huì)自動(dòng)換行,適用于需要?jiǎng)討B(tài)添加并且自動(dòng)換行的布局。DockPanel(??棵姘澹和?棵姘蹇丶试S你將子控件??吭诟溉萜鞯倪吘?,可以停靠在上、下、左、右或者中間。UniformGrid(均勻網(wǎng)格):均勻網(wǎng)格控件類似于網(wǎng)格,但是所有單元格的大小都是相同的。Canvas(畫布):畫布控件允許你使用絕對坐標(biāo)進(jìn)行子控件的定位,適用于需要精確布局的場景。Border(邊框):邊框控件可以用于裝飾其他控件,可以設(shè)置邊框和背景顏色等屬性。
這里面除了Border控件,其它控件都繼承于Panel基類。
Panel基類
命名空間:
System.Windows.Controls
程序集:
PresentationFramework.dll
Panel類是WPF中所有布局控件的基類,由于其抽象性質(zhì),不能直接實(shí)例化,但是作為基類,它為所有的布局控件提供了一些共同的屬性和方法,包括但不限于:
Background 屬性:允許設(shè)置控件的背景顏色或背景畫刷。Children 屬性:表示控件包含的子元素集合,可以通過此屬性進(jìn)行子元素的增刪查改操作。IsItemsHost 屬性:指示該 Panel 是否用作 ItemsControl 的主要容器。如果設(shè)置為 true,則表示此 Panel 是 ItemsControl 的主要容器,ItemsControl 在渲染其內(nèi)容時(shí)會(huì)考慮到這一點(diǎn)。ZIndex 屬性:控制子元素的層疊順序,用于指定子元素在同一 Panel 中的繪制順序。LogicalOrientation 和 HasLogicalOrientation 屬性:邏輯方向?qū)傩?,用于指?Panel 的布局方向。例如,StackPanel 的邏輯方向可以是水平或垂直。
除了上述屬性之外,Panel 類也提供了一些保護(hù)和虛擬方法,供子類進(jìn)行重寫以實(shí)現(xiàn)特定的布局邏輯。通過 Panel 類提供的這些屬性和方法,派生類可以實(shí)現(xiàn)各種不同的布局方式,從而滿足不同的應(yīng)用需求。
官方文檔:
Panel 類 (System.Windows.Controls) | Microsoft Learn
Grid控件(網(wǎng)格布局)
Grid控件是WPF中最常用的布局控件之一,它提供了一個(gè)靈活的網(wǎng)格布局系統(tǒng),可以將界面劃分為行和列,并在這些行和列的交叉點(diǎn)上放置子控件。
Grid控件的核心是其兩個(gè)重要屬性:ColumnDefinitions 和 RowDefinitions。這兩個(gè)屬性分別定義了網(wǎng)格布局中的列和行的集合。每個(gè)集合中的元素都是 ColumnDefinition 或 RowDefinition 類型的對象,它們允許你定義列和行的大小、最小大小、最大大小等屬性,從而實(shí)現(xiàn)對網(wǎng)格布局的更精細(xì)控制。
通過設(shè)置子控件的 Grid.Column 和 Grid.Row 屬性,可以指定子控件應(yīng)該放置在網(wǎng)格的哪一列和哪一行。此外,通過設(shè)置 Grid.ColumnSpan 和 Grid.RowSpan 屬性,還可以指定子控件應(yīng)該跨越多少列和多少行。
一、左右排列
要在WPF中實(shí)現(xiàn)左右排列,可以使用Grid或者其他適合的布局控件。
下面是使用Grid控件實(shí)現(xiàn)左右排列的簡單示例:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
二、上下排列
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
在這個(gè)示例中,我們使用了一個(gè)包含兩行的Grid控件,每行的高度都設(shè)置為"*",表示均勻分配剩余空間。然后在每行中放置了一個(gè)TextBlock控件,分別表示上方內(nèi)容和下方內(nèi)容。通過設(shè)置Grid.Row屬性,我們指定了每個(gè)TextBlock應(yīng)該位于哪一行。
三、上下左右排列
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
四、跨列排列
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
五、固定列寬
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
六、調(diào)整行高和列寬
了解如何調(diào)整Grid控件的行高和列寬是設(shè)計(jì)出良好布局的關(guān)鍵。在WPF中,可以使用不同的方式來設(shè)置行高和列寬,包括絕對設(shè)置尺寸、自動(dòng)設(shè)置尺寸以及按比例設(shè)置尺寸。
以下是這些設(shè)置方式的說明:
絕對設(shè)置尺寸: 使用設(shè)備無關(guān)單位準(zhǔn)確地設(shè)置尺寸,通常是指定一個(gè)實(shí)際的數(shù)字(像素)作為寬度或高度。例如,
七、Grid顯示網(wǎng)格線
要在WPF的Grid中顯示網(wǎng)格線,可以通過設(shè)置Grid控件的ShowGridLines屬性為True來實(shí)現(xiàn)。這樣設(shè)置后,Grid控件將在界面上顯示出網(wǎng)格線,方便布局調(diào)整和調(diào)試。
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
總結(jié)
Grid控件確實(shí)是WPF中最靈活、功能最強(qiáng)大的布局控件之一。它的自適應(yīng)特性使得它在不同分辨率的屏幕上都能夠良好地適應(yīng),并且其ActualWidth和ActualHeight屬性提供了當(dāng)前實(shí)際的寬度和高度,為布局和界面調(diào)整提供了極大的便利性。
UniformGrid控件(均分布局)
UniformGrid和Grid有些相似,UniformGrid和Grid都是用于在WPF中進(jìn)行布局的面板控件。兩者都可以劃分為行和列,并在交叉點(diǎn)上放置控件。
只不過UniformGrid的每個(gè)單元格面積都是相等的,無論是橫向的單元格還是縱向的單元格,它們都會(huì)平分整個(gè)UniformGrid。這意味著UniformGrid中的所有行和列都具有相同的大小。而在Grid中,每個(gè)行和列的大小可以根據(jù)需要設(shè)置為不同的值,可以是固定值、自動(dòng)調(diào)整大小或者按比例分配剩余空間。
所以,
當(dāng)你希望控件在UniformGrid中均勻分布,并且每個(gè)單元格具有相同的大小時(shí),可以使用UniformGrid。這在需要顯示一組控件,但不需要復(fù)雜布局的情況下非常有用。如果你需要更復(fù)雜的布局,例如控件在行和列中具有不同的大小或者需要使用合并單元格等功能,那么應(yīng)該使用Grid來實(shí)現(xiàn)。
代碼示例:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
在這個(gè)示例中,我們創(chuàng)建了一個(gè)包含3行和3列的UniformGrid,其中的每個(gè)單元格都會(huì)平均分配整個(gè)UniformGrid的寬度和高度。然后,我們在UniformGrid中放置了9個(gè)Button控件,它們會(huì)自動(dòng)填充到UniformGrid的每個(gè)單元格中,并且每個(gè)Button控件之間會(huì)有一定的間距(通過Margin屬性設(shè)置)。
UniformGrid會(huì)根據(jù)其自身的大小和行列數(shù)來平均分配空間給其中的子控件,從而實(shí)現(xiàn)均勻分布的布局效果。
StackPanel控件(棧式布局)
StackPanel是一個(gè)用于水平或垂直堆疊子元素的布局控件,在WPF中經(jīng)常用于簡單的布局需求。
以下是StackPanel的一些關(guān)鍵特性:
堆疊方向: StackPanel可以按照水平(Horizontal)或垂直(Vertical)方向堆疊其子元素。你可以通過設(shè)置StackPanel的Orientation屬性來指定堆疊方向,其默認(rèn)值為Vertical(垂直堆疊)。Children屬性: 與其他面板控件類似,StackPanel也有一個(gè)Children屬性,用于添加和管理其子元素。這些子元素會(huì)按照堆疊方向依次排列。自適應(yīng)大?。?StackPanel會(huì)根據(jù)其子元素的大小自動(dòng)調(diào)整自身的大小以適應(yīng)內(nèi)容。在水平堆疊模式下,StackPanel的寬度會(huì)根據(jù)最寬的子元素來確定;在垂直堆疊模式下,StackPanel的高度會(huì)根據(jù)最高的子元素來確定。嵌套使用: StackPanel可以嵌套使用,從而實(shí)現(xiàn)更復(fù)雜的布局效果。例如,可以在一個(gè)StackPanel中包含多個(gè)垂直StackPanel,或者在一個(gè)垂直StackPanel中包含多個(gè)水平StackPanel,以實(shí)現(xiàn)更靈活的布局。
代碼示例:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
WrapPanel控件(瀑布流布局)
WrapPanel是用于在WPF中實(shí)現(xiàn)自動(dòng)換行布局的面板控件。它會(huì)將其子控件從左到右的順序排列,如果一行的空間不足以顯示下一個(gè)子控件,則會(huì)自動(dòng)換行并繼續(xù)在下一行顯示剩余的子控件。
WrapPanel的主要特點(diǎn)包括:
自動(dòng)換行布局: WrapPanel會(huì)根據(jù)可用空間動(dòng)態(tài)地調(diào)整子控件的位置,如果一行的空間不夠,就會(huì)自動(dòng)換行。方向性: WrapPanel默認(rèn)是從左到右的水平排列,但也可以通過設(shè)置Orientation屬性來指定垂直排列(可以按照水平(Horizontal)或垂直(Vertical)方向)。自適應(yīng)大?。?WrapPanel會(huì)根據(jù)其子控件的大小自動(dòng)調(diào)整自身的大小以適應(yīng)內(nèi)容,可以根據(jù)子控件的大小和數(shù)量來動(dòng)態(tài)調(diào)整WrapPanel的大小。適用性: WrapPanel適用于需要顯示大量子控件,并且希望以自動(dòng)換行的方式來顯示這些子控件的場景,比如標(biāo)簽云、圖片墻等。
擴(kuò)展: HorizontalAlignment是一個(gè)用于控制元素水平對齊方式的屬性,在WPF中可以用于多種容器控件,包括WrapPanel。這個(gè)屬性可以設(shè)置為以下幾個(gè)值:
Left(默認(rèn)值): 元素左對齊。Center: 元素居中對齊。Right: 元素右對齊。Stretch: 元素拉伸以填充父容器的可用空間,這意味著元素將填充整個(gè)水平空間。
以下是一個(gè)簡單的示例,演示了如何使用WrapPanel來實(shí)現(xiàn)自動(dòng)換行布局:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
DockPanel控件(??坎季郑?/p>
DockPanel控件是用于??坎季值拿姘蹇丶?,在WPF中經(jīng)常用于將子元素按照相對位置水平或垂直排列。DockPanel可以將子元素??吭谄鋮^(qū)域的左側(cè)、右側(cè)、頂部、底部或者中間,根據(jù)子元素設(shè)置的DockPanel.Dock屬性來確定??康奈恢?。
以下是DockPanel的一些關(guān)鍵特性:
停靠位置: 子元素可以??吭贒ockPanel的左側(cè)(Left)、右側(cè)(Right)、頂部(Top)、底部(Bottom)或者中間(Center)。你可以通過設(shè)置子元素的DockPanel.Dock屬性來指定??康奈恢?。??宽樞颍?當(dāng)多個(gè)子元素設(shè)置了不同的??课恢脮r(shí),它們將按照從上到下、從左到右的順序???。先設(shè)置的子元素會(huì)優(yōu)先停靠在更靠近的位置。填充剩余空間: 如果某個(gè)子元素沒有設(shè)置停靠位置,它將填充DockPanel剩余的空間。這意味著只有一個(gè)子元素沒有設(shè)置??课恢脮r(shí),它將占據(jù)DockPanel的所有剩余空間;當(dāng)多個(gè)子元素都沒有設(shè)置??课恢脮r(shí),它們將重疊顯示。自適應(yīng)大?。?DockPanel會(huì)根據(jù)其子元素的大小自動(dòng)調(diào)整自身的大小以適應(yīng)內(nèi)容。??康淖釉貢?huì)根據(jù)??课恢玫牟煌詣?dòng)調(diào)整其大小和位置。
擴(kuò)展:
DockPanel控件的LastChildFill屬性用于控制最后一個(gè)未設(shè)置??课恢玫淖釉厥欠裉畛涫S嗫臻g。當(dāng)LastChildFill屬性設(shè)置為True時(shí)(默認(rèn)值),最后一個(gè)未設(shè)置停靠位置的子元素將填充DockPanel的剩余空間;當(dāng)設(shè)置為False時(shí),最后一個(gè)未設(shè)置??课恢玫淖釉夭粫?huì)填充剩余空間,而是根據(jù)自身大小進(jìn)行布局。
設(shè)置LastChildFill="False"表示最后一個(gè)未設(shè)置??课恢玫淖釉夭粫?huì)填充DockPanel的剩余空間。而VerticalAlignment="Top"則是將DockPanel在其父元素中垂直對齊到頂部。
下面是一個(gè)簡單的示例,演示了如何使用DockPanel來實(shí)現(xiàn)??坎季郑?/p>
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
VirtualizingStackPanel 類
VirtualizingStackPanel是用于在水平或垂直方向上排列和顯示內(nèi)容的面板控件,它和StackPanel在用法上非常相似。VirtualizingStackPanel的一個(gè)重要特性是它支持虛擬化,這意味著它能夠在處理大量數(shù)據(jù)時(shí)進(jìn)行優(yōu)化,只會(huì)實(shí)際呈現(xiàn)在界面上可見區(qū)域內(nèi)的內(nèi)容,而不是一次性呈現(xiàn)所有數(shù)據(jù)。
VirtualizingStackPanel繼承自VirtualizingPanel抽象類,而VirtualizingPanel又繼承自Panel布局基類。這種繼承關(guān)系確保了VirtualizingStackPanel具有與其他面板控件相似的布局功能,同時(shí)也提供了對虛擬化和大數(shù)據(jù)集的支持。
由于VirtualizingStackPanel支持虛擬化,因此在處理大量數(shù)據(jù)時(shí),它的性能通常比普通的StackPanel要好。特別是在列表或者數(shù)據(jù)綁定場景中,使用VirtualizingStackPanel可以顯著減少內(nèi)存占用和提高界面的響應(yīng)速度。
代碼示例:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
using System.Windows;
using System.Windows.Controls;
namespace WpfApp2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// 添加大量數(shù)據(jù)項(xiàng)
for (int i = 0; i < 1000; i++)
{
ListBoxItem item = new ListBoxItem();
item.Content = "Item " + i;
listBox.Items.Add(item);
}
}
}
}
啟用ListBox中虛擬化的常用方式。通過將ListBox的ItemsPanel設(shè)置為VirtualizingStackPanel,并將VirtualizingStackPanel的IsVirtualizing屬性設(shè)置為True,可以啟用ListBox中的虛擬化功能。
ListBox默認(rèn)使用VirtualizingStackPanel作為其ItemsPanel,這使得ListBox在處理大量數(shù)據(jù)時(shí)具有較好的性能表現(xiàn)。虛擬化技術(shù)使ListBox僅呈現(xiàn)在可見區(qū)域內(nèi)的數(shù)據(jù)項(xiàng),而不是一次性呈現(xiàn)所有數(shù)據(jù),從而減少內(nèi)存占用和提高界面響應(yīng)速度。
Canvas控件(絕對布局)
Canvas 控件在 WPF 中提供了絕對布局的功能,允許我們像在 WinForms 中一樣,通過拖拽子控件來進(jìn)行布局。在 Canvas 中,子控件的位置是相對于 Canvas 控件本身的坐標(biāo)系進(jìn)行定位的,因此稱為絕對布局。
Canvas 控件允許我們在其中放置各種子控件,并且可以通過設(shè)置子控件的 Canvas.Left 和 Canvas.Top 屬性來確定子控件相對于 Canvas 控件左上角的位置。這樣一來,我們可以精確地控制每個(gè)子控件的位置和大小,從而實(shí)現(xiàn)自由靈活的布局效果。
以下是一個(gè)簡單的示例,演示了如何使用 Canvas 控件進(jìn)行絕對布局:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
在這個(gè)示例中,我們創(chuàng)建了一個(gè) Canvas 控件,并在其中放置了三個(gè) Button 控件。通過設(shè)置每個(gè) Button 控件的 Canvas.Left 和 Canvas.Top 屬性,我們可以確定它們在 Canvas 中的位置。因此,Button 1 位于 (50, 50) 的位置,Button 2 位于 (200, 100) 的位置,Button 3 位于 (100, 200) 的位置。
Border控件(邊框布局)
Border 控件并不是一個(gè)布局控件,而是一個(gè)裝飾控件,它用于給其內(nèi)部的子元素提供邊框和背景等裝飾效果。Border 控件的作用是在其內(nèi)部容納一個(gè)單一的子元素,并為這個(gè)子元素提供裝飾效果,例如邊框和背景色。
Border 控件屬于 Decorator 控件的一種,Decorator 控件是一種特殊的控件,用于在其內(nèi)部容納一個(gè)單一的子元素,并為這個(gè)子元素提供裝飾或效果。Decorator 控件繼承自 FrameworkElement,而不是 Panel 控件。
因此,雖然我們可以使用 Border 控件來為子元素提供裝飾效果,但它并不是一個(gè)布局控件,而是一個(gè)裝飾控件。在使用 Border 控件時(shí),我們應(yīng)該意識(shí)到它的作用是為子元素提供裝飾效果,而不是用來進(jìn)行布局。
Border 控件具有一些常用的屬性,用于定義其邊框、填充和背景等裝飾效果。以下是這些屬性的說明:
BorderThickness(邊框厚度):用于設(shè)置 Border 邊框的厚度,即邊框的寬度。它是一個(gè) Thickness 類型的屬性,可以指定四個(gè)方向的邊框厚度。Padding(填充):用于設(shè)置子元素相對于 Border 邊框的內(nèi)邊距,即子元素與 Border 邊框之間的距離。它是一個(gè) Thickness 類型的屬性,可以指定四個(gè)方向的填充距離。CornerRadius(圓角):用于設(shè)置 Border 邊框的圓角半徑,即邊框的四個(gè)角可以設(shè)置為圓角。它是一個(gè) CornerRadius 類型的屬性,可以分別設(shè)置四個(gè)角的圓角半徑。BorderBrush(邊框顏色):用于設(shè)置 Border 邊框的顏色,即邊框的繪制顏色。它是一個(gè) Brush 類型的屬性,可以是 SolidColorBrush、GradientBrush 等畫刷類型。Background(背景顏色):用于設(shè)置 Border 的背景顏色,即 Border 控件的填充顏色。它是一個(gè) Brush 類型的屬性,可以是 SolidColorBrush、GradientBrush 等畫刷類型。
代碼示例
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800"> BorderBrush="Black" Background="LightGray" CornerRadius="5" Padding="10" Canvas.Left="86" Canvas.Top="130">
在這個(gè)示例中,我們創(chuàng)建了一個(gè) Border 控件,其中包含一個(gè) TextBlock 子元素。Border 控件具有以下屬性設(shè)置:
BorderThickness="2":設(shè)置邊框的厚度為 2 個(gè)像素。BorderBrush="Black":設(shè)置邊框的顏色為黑色。Background="LightGray":設(shè)置背景的顏色為淺灰色。CornerRadius="5":設(shè)置邊框的圓角半徑為 5 個(gè)像素,即邊框的四個(gè)角都是圓角。Padding="10":設(shè)置填充距離為 10 個(gè)像素,即子元素與邊框之間的距離為 10 個(gè)像素。
在 Border 控件內(nèi)部,我們放置了一個(gè) TextBlock 控件,用于顯示文本內(nèi)容。這樣,我們就創(chuàng)建了一個(gè)具有邊框、填充和圓角的裝飾效果的 UI 元素。
GridSplitter分割窗口
GridSplitter 控件用于分割 Grid 柵格布局,允許用戶通過鼠標(biāo)拖動(dòng)來調(diào)整行列尺寸,實(shí)現(xiàn)布局的靈活性。GridSplitter 必須放置在 Grid 柵格控件內(nèi)部,以便與 Grid 控件配合使用。
水平調(diào)整列寬:若要允許 GridSplitter 控件水平調(diào)整左右列的寬度,則需要將 HorizontalAlignment 屬性設(shè)置為 Stretch 或者 Center。垂直調(diào)整行高:若要允許 GridSplitter 控件垂直調(diào)整行的高度,則需要將 VerticalAlignment 屬性設(shè)置為 Stretch 或者 Center。ShowsPreview 屬性:該屬性表示拖動(dòng) GridSplitter 控件時(shí)是否即時(shí)繪制調(diào)整尺寸的預(yù)覽效果。
代碼示例:
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:WpfApp2" mc:Ignorable="d" Title="學(xué)習(xí)之路" Height="450" Width="800">
通過這種布局,用戶可以通過拖動(dòng) GridSplitter 控件來調(diào)整左右兩個(gè)區(qū)域的寬度,從而實(shí)現(xiàn)靈活的布局調(diào)整。
柚子快報(bào)激活碼778899分享:C#之WPF學(xué)習(xí)之路(3)
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。