无法在LayoutDocumentPane中的选项卡之间切换

时间:2014-09-25 09:07:57

标签: c# wpf avalondock

我的xaml中有一个名为MainWindowPane的LayoutDocumentPane。我使用下面的代码在程序中添加选项卡。

MyViewer viewer = new MyViewer();
LayoutDocument tempTabItem = new LayoutDocument();
tempTabItem.Closed += onTabItemClosed;
tempTabItem.Content = viewer;
MainWindowPane.Children.Add(tempTabItem);
MainDockManager.ActiveContent = 0;

现在Tabs已成功添加到窗口中,但是当我单击任何其他选项卡时,我的应用程序崩溃,当我看到堆栈跟踪时,它表示它在onModelChanged()函数上崩溃。

请帮我解决这个问题。

经过大量的调试后发现了我的问题的解决方案..

有一个线程问题,因为我的选项卡中的布局是使用后台工作程序进行的,因此在切换时并没有完全完成。

所以现在等待后台工作者完成,然后添加新的Tab。

1 个答案:

答案 0 :(得分:0)

尝试使用此作为指导您不使用代码的内容。我想您可能正在使用LayoutDocumentPane系列代替LayoutAnchorablePane

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
    xmlns:s="clr-namespace:System;assembly=mscorlib">
<xcad:DockingManager>
    <xcad:LayoutRoot>
        <xcad:LayoutPanel Orientation="Horizontal">
            <xcad:LayoutAnchorablePaneGroup DockWidth="125">
                <xcad:LayoutAnchorablePane>
                    <xcad:LayoutAnchorable ContentId="alarms" Title="Alarms">
                        <ListBox Margin="-1,0,1,0">
                            <s:String>Alarm 1</s:String>
                            <s:String>Alarm 2</s:String>
                            <s:String>Alarm 3</s:String>
                        </ListBox>
                    </xcad:LayoutAnchorable>
                    <xcad:LayoutAnchorable ContentId="journal" Title="Journal" >
                        <RichTextBox>
                            <FlowDocument>
                                <Paragraph FontSize="14" FontFamily="Segoe">
                                    This is the content of the Journal Pane.
                                    <LineBreak/>
                                    A
                                    <Bold>RichTextBox</Bold> has been added here
                                </Paragraph>
                            </FlowDocument>
                        </RichTextBox>
                    </xcad:LayoutAnchorable>
                </xcad:LayoutAnchorablePane>
            </xcad:LayoutAnchorablePaneGroup>
        </xcad:LayoutPanel>
    </xcad:LayoutRoot>
</xcad:DockingManager>