2010-02-26 30 views
3

我在WPF(xaml)中使用網格,當在ColumnDefinition中使用MinWidth屬性時我有一些奇怪的效果。例如,當我使用9 ColumnDefinition並且每個ColumnDefinition具有'Width =「*」'屬性並且其中一箇中間列也具有MinWidth屬性時,則其他列的大小是錯誤的。ColumnDefinition MinWidth不能正常工作

嗯,這是很難discribe但此XAML代碼說明好聽:

<Grid Width="500"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*" MinWidth="250"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <Border Grid.Column="0" Background="Green"/> 
    <Border Grid.Column="1" Background="Blue"/> 
    <Border Grid.Column="2" Background="Red"/> 
    <Border Grid.Column="3" Background="Yellow"/> 
    <Border Grid.Column="4" Background="Purple"/> 
    <Border Grid.Column="5" Background="Orange"/> 
    <Border Grid.Column="6" Background="Azure"/> 
    <Border Grid.Column="7" Background="LightBlue"/> 
    <Border Grid.Column="9" Background="LightGreen"/> 
    </Grid> 

當你運行這個XAML代碼,你會看到第一個3列有不同的寬度比過去的5列。我希望所有這些都具有相同的寬度。

有誰知道這是否是一個錯誤。如果有辦法做到這一點正確。

在此先感謝。

回答

10

我明白你的意思了 - 黃色左邊的列比右邊的列寬,即使它們的含義是相同的。

我會說這是一個錯誤,尤其是當你考慮到了以下解決方法工作

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="1.0000001*" MinWidth="250"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
</Grid.ColumnDefinitions> 

我猜想,這個bug是有關列如何寬度分組...

+0

完美的答案和一個非常優雅的解決方案。謝謝。 – 2010-02-26 09:01:35

+0

很有意思,Rob!接得好。 – Anvaka 2010-02-26 09:52:52

0

它看起來就像它的工作方式。你已經限制網格500點,並說:嘿,給所有的網格列寬度相同,但這個列應至少250點。現在WPF向你提出的問題是:老兄,我看你要求我給每個9列至少250分,我怎麼能在500分中做到這一點?它決定尊重你的最小寬度,但價格是 - 其餘列的寬度。

至於如何正確地做到這一點。你什麼意思?你想要什麼?

+2

我想給所有列相同的寬度。但是,當中間列變得太小時,它應該有一個最小寬度,但剩餘空間應該均勻分佈在其他列上。例如,當您在上例中將MinWidth =「250」替換爲MaxWidth =「10」時,您會看到剩餘空間均勻分佈。所以它適用於MaxWidth,但不適用於MinWidth? – 2010-02-26 08:55:24

+0

哦。我明白你的意思。在Rob展示瞭解決方法之後,我傾向於同意。這是一個錯誤。對不起,沒有幫助,但很高興你可以找到解決方案:) – Anvaka 2010-02-26 09:36:35