У меня есть UserControl
, который содержит TabControl
.
TabControl будет иметь от 1 до n TabItems
, то есть: первый TabItem всегда будет там, и его содержимое будет одинаковым для каждого экземпляра моего UserControl, но остальные элементы TabItems должны появиться из моего кода потому что сначала я должен их сконструировать в зависимости от некоторых свойств.TabControl: первый TabItem статический, отдых от кода
Моя первая попытка состояла из
<UserControl x:Class="MyNS.MyControl"
xmlns:local="MyNS"
and the whole rest of the declarations>
<Grid>
<TabControl>
<TabControl.ItemsSource>
<Binding Path="Tabs" RelativeSource="{RelativeSource AncestorType=local:MyControl}" />
</TabControl.ItemsSource>
<TabControl/>
</Grid>
</UserControl>
где Tabs
является declarated, как public IList Tabs { get { return ... } }
в отделенного кода. Это не зависимость или прикрепленное свойство. Это просто поле.
Это прекрасно работает. Будет показано, что я построю в коде.
Однако, когда я хочу, чтобы определить первый TabItem вручную я столкнуться с проблемами:
<UserControl x:Class="MyNS.MyControl"
xmlns:local="MyNS"
and the whole rest of the declarations>
<Grid>
<TabControl>
<TabControl.ItemsSource>
<CompositeCollection>
<CollectionContainer>
<CollectionContainer.Collection>
<x:Array Type="TabItem">
<TabItem Header="Test"/>
</x:Array>
</CollectionContainer.Collection>
</CollectionContainer>
<CollectionContainer>
<CollectionContainer.Collection>
<Binding Path="Tabs"
RelativeSource="{RelativeSource AncestorType={x:Type local:MyControl}}"/>
</CollectionContainer.Collection>
</CollectionContainer>
</CompositeCollection>
</TabControl.ItemsSource>
<TabControl/>
</Grid>
</UserControl>
всегда отображается первый (статический) элемент, но кажется, что связывание не может решить мою поглотитель для Tabs
больше.
Как я могу определить первый элемент вкладки вручную (в XAML) и извлечь остальные из кода?
я должен был переместить полный 'CompositeCollection' к ресурсам пользовательского элемента управления, но в основном это работает, как предполагалось. –