GridSplitter переопределяет триггер стиля ColumnDefinition?

Я столкнулся со странной проблемой...
Похоже, что изменение размера столбцов сетки с помощью GridSplitter отключает (или иным образом деактивирует) триггер, определенный для столбца сетки.

Вот моя установка:

Grid имеет 3 колонки, определенные следующим образом:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition>
        <ColumnDefinition.Style>
            <Style>
                <Setter Property="ColumnDefinition.Width" Value="Auto"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=OpenItemViewModels.Count}" Value="0">
                        <Setter Property="ColumnDefinition.Width" Value="0"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ColumnDefinition.Style>
    </ColumnDefinition>
    <ColumnDefinition>
        <ColumnDefinition.Style>
            <Style>
                <Setter Property="ColumnDefinition.Width" Value="4*"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=OpenItemViewModels.Count}" Value="0">
                        <Setter Property="ColumnDefinition.Width" Value="0"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ColumnDefinition.Style>
    </ColumnDefinition>
</Grid.ColumnDefinitions>

Ожидается, что когда нет элементов, которые являются ItemsSource для элемента управления в третьей колонке, второй и третьей колонкам (в которых размещены GridSplitter и элемент управления вспомогательными элементами, соответственно) будет присвоена ширина 0.

Это работает хорошо до тех пор, пока я не трогаю сплиттер (когда все вкладки вспомогательного элемента управления закрыты, видимым остается только первый столбец).
Проблемы начинаются, если я перемещаю сплиттер, тем самым эффективно изменяя пропорцию между столбцами ##0 и 2. В таком сценарии ширина этих столбцов не сбрасывается, когда все элементы правого элемента управления закрыты.

Я подозреваю, что это как-то связано с тем, что GridSplitter "отменяет" мои определения в XAML.

Может ли кто-нибудь подтвердить/опровергнуть эту теорию и предложить, как обойти проблему?

11
задан Alex 18 December 2011 в 05:57
поделиться