Размер окна и TabControl с привязкой данных (размер элементов) - PullRequest
4 голосов
/ 09 ноября 2010

Следующий сценарий беспокоит меня: У меня есть простое окно WPF с контентом TabControl. ItemsSource элемента TabControl привязан к списку объектов. Для визуализации объектов я определил несколько DataTemplates. Поскольку список объектов может иметь разные типы, правильная визуализация выбирается селектором шаблона по умолчанию. Это работает нормально и не вызывает никаких проблем.

Возникла проблема с размером окна. Шаблоны данных имеют разные размеры. И я хочу, чтобы размер диалогового окна соответствовал наибольшему шаблону данных. Когда я использую SizeToContent в окне, окно меняет свой размер каждый раз, когда я меняю вкладки.

Итак, мои вопросы: как я могу добиться, чтобы окно соответствовало наибольшему TabItem (размер которого определяется DataTemplate)?

спасибо, Florian

1 Ответ

4 голосов
/ 02 марта 2012

Проблема, с которой вы столкнулись, заключается в том, что, поскольку более крупный DataTemplate не отображается, его размер не учитывается при определении размера содержимого.

Ваши параметры:
1) Установка вручную (мин.)ширина / высота для соответствующих элементов управления (tabcontrol, Window, DataTemplate и т. д.)
2) Если вы знаете, что определенная вкладка всегда будет больше остальных, вы можете привязать ширину / высоту других вкладок кБольшая вкладка:

<TabItem>
    <StackPanel Name="stackPanelBiggest" />
</TabItem>
<TabItem>
    <StackPanel Width="{Binding ElementName=stackPanelBiggest, Path=ActualWidth}" />
</TabItem>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...