我需要在tabcontrol的每个标签内加载avalondock [1]控件。
[1] - http://avalondock.codeplex.com/wikipage?title=AvalonDock%202.0%20Getting%20Start%20Guide
在复杂化之前,我编写了一个简单的poc应用程序来从我的viewmodel&中加载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文本框。显然我错过了一些东西。
有人碰到这个吗?这是数据上下文问题吗?有什么想法吗?
答案 0 :(得分:0)
我已经为此找到了解决方案,但并不像我那么困难。虽然可以通过Avalondock控制来设计控制以实现此解决方案。
我得到了我的想法&amp;此代码项目示例http://www.codeproject.com/Articles/483533/AvalonDock-2-0-Tutorial-Part-2-Adding-a-Start-Page
的实现