Я помещаю два элемента управления в столбец сетки и делаю видимым либо первый, либо второй элемент управления. Поскольку для ширины столбца сетки задано значение 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>