【问题标题】:Avalon dock 2.0 within a TabItem does not loadTabItem 中的 Avalon Dock 2.0 未加载
【发布时间】:2014-01-20 15:53:02
【问题描述】:

我需要在 tabcontrol 的每个选项卡内加载 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 没有加载,我希望在每个选项卡中看到带有 Hello World 文本框的 dockcontrol。显然我错过了一些东西。

有人遇到过这种情况吗?是数据上下文问题吗?有什么想法吗?

【问题讨论】:

    标签: c# .net wpf avalondock


    【解决方案1】:

    我已经找到了解决方案,但它并不像我那么难。虽然归功于 Avalondock 控件,因为它设计了控件以支持此解决方案。

    我从这个代码项目示例http://www.codeproject.com/Articles/483533/AvalonDock-2-0-Tutorial-Part-2-Adding-a-Start-Page得到我的想法和实现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      相关资源
      最近更新 更多