簡體   English   中英

父窗口調整大小時WPF調整大小/對齊按鈕

[英]WPF Resizing/Aligning Buttons when parent window resized

我正在編寫我的第一個WPF應用程序,當窗口最大化時,我在調整按鈕大小/對齊按鈕方面遇到了一些問題。

基本上我的應用程序頂部有一排大按鈕。 目前他們在Canvas中,但我也嘗試過Grid和Stackpanel。 每當我最大化(或者實際上只是擴展我的窗口)時,按鈕基本上都停留在同一個地方。 我想要的是重新定位按鈕相對於其父容器,或拉伸按鈕寬度以適應更改。

任何人都可以就什么是最好的容器和方法提供建議? 我看過Canvas.Top/Left,HorzontalAlignment,Margin等,但我似乎無法找到正確的組合。

謝謝。

WPF的方法是在MainGrid中對齊所有內容。 如果你把Button 1放在例如Grid.Row 3和Grid.Column 2中,它將保留在那里。

如果更改窗口大小,網格會調整大小,但控件仍保留在原位。 您還可以使網格行/列固定寬度,自動調整大小或百分比。

與您的控件相同。 所以知道這一點,這只是一個玩弄它的問題。

這是一個例子。 只需使用寬度:

<Grid x:Name="LayoutRoot" Background="White">
    <Grid.RowDefinitions>
        <RowDefinition Height="43*" />
        <RowDefinition Height="222*" />
        <RowDefinition Height="35*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="113*" />
        <ColumnDefinition Width="168*" />
        <ColumnDefinition Width="119*" />
    </Grid.ColumnDefinitions>
    <Button Content="TEST" Grid.Column="2" Grid.Row="1" 
     HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" />
</Grid>

做一些自動,做一些修復,最后你會理解目標。

我會使用一個DockPanel,並將面板停靠在頂部以達到您的目的。 或者,如果您想要拉伸按鈕,可以使用UniformGrid。

<DockPanel>
  <StackPanel DockPanel.Dock="Top">
    <Button Content="Button1"/>
    <Button Content="Button2"/>
    <Button Content="Button3"/>
  </StackPanel
  <Grid>
    <!-- Stuff in the main part of the window here -->
  </Grid>
</DockPanel>

您可以使用@ De-ruige提到的網格。

除了幫助您理解網格的含義之外,還可以在網格定義中使用屬性“ShowGridLines”,如下所示:

<Grid x:Name="LayoutRoot" Background="White" ShowGridLines="True">

此外,如果要在網格中的幾個單元格中添加類似按鈕的控件,可以使用以下Grid.ColumnSpanGrid.RowSpan / Grid.ColumnSpan

Grid.RowSpan - MSDN

HorizontalAlignment更改為“Right”,將VerticalAlignment更改為“Bottom”。

巴姆。 問題解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM