2015-09-30 33 views
2

我是xaml和Windows 10 Gui編程的新手。我想設計一個帶有TextBlock,ListBox和Button的頁面,所有頁面都居中。無論用戶如何調整窗口大小,我都希望TextBlock和按鈕總是位於頁面的頂部和底部。 ListBox應該自己伸展以自動填充TextBlock和ListBox之間的間隙。我曾嘗試將VerticalAlignment設置爲不同的值,但似乎沒有做任何事情。如何填寫頁面並根據調整大小調整文本位置

<Page 
x:Class="FirstWin10.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:FirstWin10" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"> 

<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Orientation="Vertical"> 
    <TextBlock x:Name="textBlock" HorizontalAlignment="Center" Margin="10,20,10,0" TextWrapping="Wrap" VerticalAlignment="Top"> 
     <Run Text="Unkown Screen Name"/> 
     <LineBreak/> 
     <Run/> 
    </TextBlock> 
    <ListBox x:Name="listBox" HorizontalAlignment="Center" MinWidth="450" MinHeight="178" Margin="50,20,50,0" VerticalAlignment="Stretch"> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox /> 
      <TextBox Text="ListBox Item #1" /> 
     </StackPanel> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox /> 
      <TextBlock> 
       <Run Text="ListBox Item #2"/> 
      </TextBlock> 
     </StackPanel> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox /> 
      <TextBlock> 
       <Run Text="ListBox Item #3"/> 
      </TextBlock> 
     </StackPanel> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox /> 
      <TextBlock> 
       <Run Text="ListBox Item #4"/> 
      </TextBlock> 
     </StackPanel> 
    </ListBox> 
    <Button x:Name="button" Content="Button" HorizontalAlignment="Center" Margin="10,20,10,0" VerticalAlignment="Bottom"/> 
</StackPanel> 

回答

2

考慮使用Grid三行。第一行和最後一行自動拉伸至TextBlockButton;中間一排佔據了空間的其餘部分。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <TextBlock Grid.Row="0" HorizontalAlignment="Center" /> <!-- Grid.Row="0" can be removed as it's the default --> 
    <ListBox Grid.Row="1" HorizontalAlignment="Center" /> 
    <Button Grid.Row="2" HorizontalAlignment="Center" /> 
</Grid> 
+1

謝謝@Justin。這就是我要的。 – Jerry

+0

一個側面的問題,怎麼可能讓TextBox根據窗口的大小進行調整?使用Grid相同的解決方案 – Jerry

+0

它應該自動伸展。但是如果你把它放在一個ListBox中,你將需要覆蓋它的ItemContainerStyle。嘗試谷歌搜索,有很多答案告訴你如何做到這一點。 –

相關問題