Сетка больше не меняет размер - PullRequest
0 голосов
/ 30 января 2009

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

Спасибо! * * 1004

EDIT:
Свойство width столбца - это данные, привязанные к свойству, для которого снова установлено значение GridLength.Auto (кредит Мартина Мозера), но Snoop сообщает, что это будет проигнорировано. Поэтому (новый) вопрос заключается в том, как вернуть ширину столбца в автоматический режим.

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>

Ответы [ 2 ]

1 голос
/ 30 января 2009

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

0 голосов
/ 30 января 2009

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

...