У меня есть требование загрузить элемент управления avalondock [1] внутри каждой вкладки элемента управления вкладками.
[1] – http://avalondock.codeplex.com/wikipage?title=AvalonDock%202.0%20Getting%20Start%20Guide
Прежде чем усложнять это, я написал простое приложение poc, чтобы просто загружать tabItems из моей модели просмотра и загружать элемент управления док-станцией на каждой вкладке, xaml ниже...
<TabControl ItemsSource="{Binding TabItems}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<!--<TextBlock Text="{Binding Content}" />-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Content}"></TextBlock>
<xcad:DockingManager Grid.Row="1" x:Name="dockingManager" VerticalAlignment="Top" Background="Red" Width="500" Height="500" >
<xcad:LayoutRoot>
<xcad:LayoutPanel Orientation="Horizontal">
<xcad:LayoutDocumentPane>
<xcad:LayoutDocument Title="Document 1">
<TextBlock x:Name="dockTextBlock" Background="Green" VerticalAlignment="Top" Text="Hello World"></TextBlock>
</xcad:LayoutDocument>
</xcad:LayoutDocumentPane>
</xcad:LayoutPanel>
</xcad:LayoutRoot>
</xcad:DockingManager>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Моя модель просмотра передает следующее...
TabItems = new ObservableCollection<TabItem>()
{
new TabItem(){Header = "Tab 1", Content = "I am tab 1"},
new TabItem(){Header = "Tab 2", Content = "I am tab 2"}
};
private ObservableCollection<TabItem> _tabItems;
public ObservableCollection<TabItem> TabItems
{
get { return _tabItems; }
set
{
_tabItems = value;
RaisePropertyChanged(() => TabItems);
}
}
Элементы вкладки загружаются правильно, и я вижу содержимое, но dockcontrol
не загружается, я ожидал увидеть dockcontrol
с текстовым полем Hello World на каждой вкладке. Явно что-то упускаю.
Кто-то сталкивался с этим? Это проблема контекста данных? Есть предположения?