Настройка:
ListView с GridView, который изначально скрывается при загрузке окна, а затем становится видимым при определенных действиях пользователя.
Цель:
Уметь устанавливать относительную ширину столбцов GridView.
Проблема:
То, что мне нужно, может быть достигнуто либо с помощью конвертера по ширине (что-то похожее на ответ здесь ), либо путем добавления Поведения в ListView (см. это решение ).
Оба подхода кажутся верными - но только для элементов управления, которые отображаются с самого начала.
В моем случае ActualWidth всегда равен 0, когда выполняются вычисления, и эти вычисления не повторяются, когда ListView становится видимым.
Итак, я думаю, real вопрос здесь , как получить ширину столбцов для повторной оценки, когда ActViewWidth ListView становится больше 0.
Решение, предпочтительно, будет на уровне XAML, без использования кода, но это будет так же, если это единственная альтернатива; -)
Есть предложения?
PS После вопроса Криса, приведенного ниже, поясняется, как ListView скрыт / показан: это дочерний элемент другого элемента управления контейнера, размещенный в столбце Grid, и ширина этого столбца управляется триггер.
<ColumnDefinition>
<ColumnDefinition.Style>
<Style>
<Setter Property="ColumnDefinition.Width" Value="4*"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OpenItems.Count}" Value="0">
<Setter Property="ColumnDefinition.Width" Value="0"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ColumnDefinition.Style>
</ColumnDefinition>
Я попытался применить аналогичный триггер к самому контейнеру ListView (чтобы манипулировать его видимостью между Collapsed и Visible), но проблема в том, что столбец не сжимается от своей первоначальной ширины 4 *, поэтому я вижу (пустой) элемент управления, когда он должен быть скрыт.