我正在處理其內容是網格的WPF控件。我對WPF比較陌生,所以我想知道下面是否是正確的方法。WPF網格佈局和單元格內容邊距
我放置兩個標籤中的網格,都在同一列中,但相鄰行:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="UntitledProject8.Window1"
x:Name="Window"
Title="Window1"
Width="200" Height="200">
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="100"/>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="1.23" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
<Label Grid.Row="1" Content="45" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</Grid>
我設置標籤垂直對準,使得在零行標籤被對準到底部,第1排的標籤與頂部對齊。
現在,這與我想要的很接近,但我需要第1行中標籤的實際文本更接近第零行中的標籤文本。要做到這一點,我在第1行標籤的邊距設置爲負值:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="UntitledProject8.Window1"
x:Name="Window"
Title="Window1"
Width="200" Height="200">
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Height="100"/>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="1.23" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
<Label Grid.Row="1" Content="45" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,-20,0,0"/>
</Grid>
那是正確的方式做到這一點?當然,我上面的例子是簡單的,但隨着網格內容的增長和變得更加複雜(例如包括其他佈局容器),爲控制邊界設置不同的值是使相鄰單元格更接近或更遠的正確方法?
我只是有點擔心,因爲我盡我所能避免硬編碼任何類型的「設計器」值,就像我在使用WinForms時(例如爲位置和尺寸值設置確切的座標系)一樣,並且希望讓佈局經理來照顧它。但是,看起來設定保證金是唯一的出路。
感謝您的幫助:)