Сетка больше не изменяет размер

Я помещаю два элемента управления в столбец сетки и делаю видимым либо первый, либо второй элемент управления. Поскольку для ширины столбца сетки задано значение auto, он будет изменять свой размер в соответствии с шириной видимого дочернего элемента... если только я не изменю ширину столбца с помощью разделителя сетки.
Теперь столбец не изменяет свой размер до своего содержимого больше, если я переключаю видимость дочерних элементов управления. Как я могу установить исходное поведение?

Спасибо!

РЕДАКТИРОВАТЬ:
Свойство ширины столбца — это данные, привязанные к свойству, для которого снова задано значение GridLength.Auto (спасибо Мартину Мозеру), но Снуп говорит мне, что это будет проигнорировано. Итак, (новый) вопрос заключается в том, как я могу установить ширину столбца обратно на авто.

EDIT:
Пример

  • Запустить приложение
  • Используйте флажок, чтобы переключить видимость красной панели
  • => Правильное изменение размера первого столбца
  • Изменить размер столбца с помощью разделителя
  • Установите/снимите флажок
  • => Больше нет изменения размера первого столбца

XAML:

<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="300">
    <Window.Resources>
        <BooleanToVisibilityConverter x:Key="CONV_KEY"></BooleanToVisibilityConverter>
    </Window.Resources>
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <DockPanel Grid.Column="0" Width="100" Background="Red"
                Visibility="{Binding ElementName=_checkBox,Path=IsChecked,Converter={StaticResource CONV_KEY}}">
        </DockPanel>
        <DockPanel Grid.Column="0" Width="10" Background="Green" HorizontalAlignment="Left"></DockPanel>
        <GridSplitter Grid.Column="1" Width="10" ResizeBehavior="PreviousAndNext"></GridSplitter>
        <CheckBox x:Name="_checkBox" Grid.Column="3" VerticalAlignment="Top">Toggle</CheckBox>
    </Grid>
</Window>

person Alex Janzik    schedule 30.01.2009    source источник


Ответы (2)


Вы пытались снова установить ширину определения столбца в GridLength.Auto, когда вам нужно это сделать?

person Martin Moser    schedule 30.01.2009

Это довольно хак, но попробуйте установить ширину на какое-то фиксированное значение, а затем вернуться к Auto, что должно вызвать изменение, и значение не следует игнорировать, может быть, оно работает...

person Martin Moser    schedule 30.01.2009