WPF Tabcontrol имеет размер самой большой вкладки

У меня есть TabControl, связанный с коллекцией моделей Viewmodels, которые переводятся в подходящий для рисования вкладку:

<Window.Resources>
    <ResourceDictionary>
        <DataTemplate DataType="{x:Type charting:LineFormatViewModel}">
            <charting:LineFormatView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type charting:IndexSettingsViewModel}">
            <charting:IndexSettingsView />
        </DataTemplate>
        ....
    </ResourceDictionary>
</Window.Resources>

<TabControl ItemSource="Binding ViewModels" />

Я пытаюсь найти способ всегда рисовать TabControl на максимальной ширине и высоте любого из них. Пусть WPF Tabcontrol height принимает высоту самого большого элемента? упоминает несколько способов достижения этого в ответах (из чего я udnerstood):

  • использование Grid с SharedSizeGroup - похоже, необходимо применить к DataTemplate в фактическом содержимом TabControl, который перезаписывает автоматическое представление чертежа, достигаемое с помощью отображения VM- > View, созданного в resourcedictionary
  • Использование конвертера ширины/высоты, для чего мой TabControl должен быть привязан к набору элементов пользовательского интерфейса вместо viewmodels

Есть ли у кого-нибудь опыт решения подобной проблемы? Кажется, я поражаю больше стен каждый раз, когда я продвигаюсь по этому поводу.

Ответ 1

Вам нужно использовать именованные скрытые элементы управления, которые могут создайте прямое связывание с их шириной/высотой, например:

 Width="{Binding ActualWidth, ElementName=MainGrid}"