2012-09-12 152 views
1

讓我們假設我有3列格:結合汽車,*

1st column requires minimum height of 100 to display its content 
2nd column requires minimum height of 200 to display its content 
3rd column requires minimum height of 300 to display its content 

總要求的高度是600。如果可用空間是900個像素,則額外的300個像素應平分列之中,所以最後的結果是:

1st column height = 200 
2nd column height = 300 
3rd column height = 400 

如果我使用*設置高度,那麼最終的結果是每列300個像素,這是不是我想要的。基本上我需要自動和*的組合。這可以在xaml中完成嗎?

+2

怎麼樣設置寬度爲「自動」,並設置MinWidth至100,200,和300? –

+0

列高?或者你的意思是寬度? –

+0

高度,是的。很抱歉的錯字 –

回答

1

試試這個:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" 
     Height="800" 
     Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" 
          MinHeight="100" /> 
      <RowDefinition Height="*" 
          MinHeight="200" /> 
      <RowDefinition Height="*" 
          MinHeight="300" /> 
     </Grid.RowDefinitions> 
     <TextBlock Background="LightBlue" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
     <TextBlock Grid.Row="1" 
        Background="LightCyan" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
     <TextBlock Grid.Row="2" 
        Background="LightCoral" 
        Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" /> 
    </Grid> 
</Window> 

您將看到的高度至少是100,200,300,但只要有足夠的地方,額外的地方就會平均分配給行。

+0

問題是我不知道顯示內容所需的最小高度是多少。對於不同的語言可能會有所不同。這就是爲什麼我說我需要Auto(它將分配高度足以顯示內容)和*(以平均分配所有列中的空閒空間)的組合。 – Goran

0

1山坳高度= 2 *

第二山坳高度= 3 *

3山坳高度= 4 *

+0

這不會平分這個地方。 –