У меня есть IList
видмоделей, привязанных к TabControl
. Этот IList
не изменится на время жизни TabControl
.
<TabControl ItemsSource="{Binding Tabs}" SelectedIndex="0" >
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Content" Value="{Binding}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
Каждая модель просмотра имеет DataTemplate
, которая указана в ResourceDictionary
.
<DataTemplate TargetType={x:Type vm:MyViewModel}>
<v:MyView/>
</DataTemplate>
Каждый из представлений, указанных в DataTemplate, достаточно ресурсоемкий, чтобы создать то, что я хотел бы создать каждый вид только один раз, но когда я переключаю вкладки, вызывается конструктор для соответствующего представления. Из того, что я прочитал, это ожидаемое поведение для TabControl
, но мне непонятно, что этот механизм вызывает конструктор.
Я рассмотрел аналогичный вопрос, который использует UserControl
s, но предлагаемое там решение потребует от меня привязки к представлениям, которые нежелательны.