我的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。
答案 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>