2016-02-10 5 views
0

У меня есть три кнопки в сетке.Изменение размера сетки Столбец после того, как все столбцы свернуты

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Button Grid.Column="0" Content="A" /> 
    <Button Grid.Column="1" Content="B" /> 
    <Button Grid.Column="2" Content="C" /> 
</Grid> 

Я ожидаю, что Кнопки с видимостью = «Свернутые» не занимают места.

Например

(1)

<Button Grid.Column="0" Content="A" /> //33% of space 
<Button Grid.Column="1" Content="B" /> //33% of space 
<Button Grid.Column="2" Content="C" /> //33% of space 

(2)

<Button Grid.Column="0" Content="A" /> //50% of space 
<Button Grid.Column="1" Content="B" /> //50% of space 
<Button Grid.Column="2" Content="C" Visibility="Collapsed" /> //0% of space 

(3)

<Button Grid.Column="0" Content="A" /> //100% of space 
<Button Grid.Column="1" Content="B" Visibility="Collapsed" /> //0% of space 
<Button Grid.Column="2" Content="C" Visibility="Collapsed" /> //0% of space 

Как мне это сделать?

+0

вместо изменения видимости изменение ширины столбца Кнопка ''. Даже неиспользуемый столбец займет пробел, если только с «Авто» – dkozl

+0

В этом примере похоже, что вам будет лучше с помощью StackPanel, чем с сеткой. Затем, когда вы обрушаете элементы, макет изменится, как вы ожидаете. – Puffin

ответ

0

Попробуйте это:

<Grid Name="grid"> 
    <Grid.Resources> 
     <Style TargetType="Button"> 
      <Style.Triggers> 
       <Trigger Property="Visibility" Value="Collapsed"> 
        <Setter Property="Tag" Value="0"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Grid.Resources> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="{Binding ElementName=A,Path=Tag}" /> 
     <ColumnDefinition Width="{Binding ElementName=B,Path=Tag}" /> 
     <ColumnDefinition Width="{Binding ElementName=C,Path=Tag}" /> 
    </Grid.ColumnDefinitions> 
    <Button Grid.Column="0" Content="A" Name="A" Click="Button_Click" /> 
    <Button Grid.Column="1" Content="B" Name="B" /> 
    <Button Grid.Column="2" Content="C" Name="C" Visibility="Collapsed" /> 
</Grid>