2010-02-26 8 views
3

WPF (xaml)에서 Grid를 사용하고 있는데 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> 

당신은 당신이 처음 3 열은 마지막 5 열에는 다른 폭을 가지고 볼이 XAML 코드를 실행합니다. 나는 모든 사람들이 같은 너비를 가지기를 기대했다.

누구에게 알리는 사람이 있습니까? 그리고 이것을 제대로 할 수있는 방법이 있다면.

미리 감사드립니다.

답변

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> 

내가이 버그가 ...

열이 폭에 의해 그룹화하는 방법과 관련이 있음을 추측 할
+0

완벽한 답변과 매우 우아한 솔루션입니다. 감사. –

+0

아주 흥미 롭다, 롭! 좋은 캐치. – Anvaka

0

마치 작동하는 것처럼 보입니다. 당신은 500 포인트에서 그리드를 제한하고, 말했다 : 어이, 모든 그리드 컬럼에 같은 너비를주고, 또한이 컬럼은 적어도 250 포인트가되어야합니다. 이제 WPF에서 당신에게 질문 : 야, 나는 당신이 나에게 9 열 각각에 적어도 250 점을 주도록 요청한 것을 본다. 나는 이것을 500 점으로 어떻게 할 수 있는가? 그리고 최소 너비를 존중하기로 결정하지만 가격은 나머지 열 너비입니다.

올바른 방법입니다. 무슨 소리 야? 원하는게 뭐야?

+2

모든 열에 동일한 너비를 부여하고 싶습니다. 그러나 가운데 열이 너무 작아지면 최소 너비가 있어야하지만 나머지 열은 다른 열 위에 고르게 분산되어야합니다. 예를 들어 위의 예에서 MinWidth = "250"을 MaxWidth = "10"으로 바꾸면 남은 공간이 균등하게 배분됩니다. 그래서 그것은 MaxWidth에서 작동하지만 MinWidth에서는 작동하지 않습니다. –

+0

오. 너의 의도를 알 겠어. 그리고 Rob이 해결 방법을 보여준 후에, 나는 동의하는 경향이 있습니다. 그것은 버그입니다. 도움이되지 않아서 미안하지만 솔루션을 찾을 수있어서 다행입니다 :) – Anvaka

관련 문제