TabItem中的Avalon dock 2.0无法加载

时间:2014-01-20 15:53:02

标签: c# .net wpf avalondock

我需要在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文本框。显然我错过了一些东西。

有人碰到这个吗?这是数据上下文问题吗?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我已经为此找到了解决方案,但并不像我那么困难。虽然可以通过Avalondock控制来设计控制以实现此解决方案。

我得到了我的想法&amp;此代码项目示例http://www.codeproject.com/Articles/483533/AvalonDock-2-0-Tutorial-Part-2-Adding-a-Start-Page

的实现