簡體   English   中英

WPF GridSplitter:當第一列的大小為“ *”時,更改最后一列的寬度

[英]WPF GridSplitter: changing the last column width when first one has a “*” for size

我有一種情況,網格的第一列應占用網格的剩余空間,但我希望用戶可以使用GridSplitter來調整最后一列的大小。

這是布局的簡化示例:

<?xml version='1.0' encoding='utf-8' ?>
<Window
  x:Class="WPFApplication1.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="300" Width="500">
  <Grid Margin="10">
    <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition Width="10" />
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="10" />
      <ColumnDefinition Width="100" />
    </Grid.ColumnDefinitions>

    <Border BorderBrush="Black"
            BorderThickness="1" />

    <Border BorderBrush="Black"
            BorderThickness="1"
            Width="20"
            Grid.Column="2" />

    <GridSplitter HorizontalAlignment="Center"
                  VerticalAlignment="Stretch"
                  Width="10"
                  Grid.Column="3" />

    <Border BorderBrush="Black"
            BorderThickness="1"
            Grid.Column="4" />

  </Grid>
</Window>

在此示例中,邊框是在此處查看列的內容。

此示例不起作用,因為移動GridSplitter會更改左側列的大小,但應調整右側最后一列的大小。

有沒有人解決這個問題?

您可以嵌套兩個網格。

外部網格:

  • 3列( *auto100
  • 第三列包含問題中最后一列的內容
  • 第一列包含一個子網格

子網格:

  • 3列( *10auto

該子網格包含問題中前3列的內容。

這樣,拆分器將在子網格和最后一列之間進行拆分。

因為第一列的寬度設置為*所以它將獲得剩余的寬度。

暫無
暫無

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

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