【发布时间】:2015-11-17 23:42:42
【问题描述】:
我正在尝试将我的一些旧 AvalonDock 概念分配给 AD 2.0。我注意到DocumentContent 被LayoutDocument 取代。通过访问LayoutDocumentPane,.Children.add() 可以轻松添加表单。但是,新表单的创建是在我的应用程序中线程化的(InitializeComponents 需要一段时间),并且将文档添加到停靠系统是通过调用执行的。这会导致 InvalidOperation,我猜它无法修复,因为它是 WPF。我希望通过使用绑定来处理这个问题。从我的 AD1 代码开始,我意识到所有属性都在 Content 对象中。将Content. 添加到绑定源将使我的文档标题看起来像模板定义的一样。在此处查看我的 XAML:
<AD:DockingManager Name="dockManager" DocumentsSource="{Binding Documents}" >
<AD:DockingManager.DocumentHeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Content.IconSource}" />
<TextBlock Text="{Binding Content.Title}" />
</StackPanel>
</DataTemplate>
</AD:DockingManager.DocumentHeaderTemplate>
<AD:LayoutRoot PropertyChanged="OnLayoutRootPropertyChanged">
<AD:LayoutPanel Orientation="Horizontal" >
<AD:LayoutDocumentPaneGroup>
<AD:LayoutDocumentPane>
</AD:LayoutDocumentPane>
</AD:LayoutDocumentPaneGroup>
<AD:LayoutAnchorablePaneGroup DockWidth="300">
<AD:LayoutAnchorablePane x:Name="rightPanel">
</AD:LayoutAnchorablePane>
</AD:LayoutAnchorablePaneGroup>
</AD:LayoutPanel>
</AD:LayoutRoot>
</AD:DockingManager>
文档定义:
public ObservableCollection<LayoutDocument> Documents { get; private set; }
如果我现在向Documents 添加一些新表单,标题是正确的,但没有显示窗口内容。而不是打印窗口的类名。我认为它与标题类似,并且缺少对.Content 的一些引用,并且我在更高级别上看到了对象的一些.ToString() 结果。如何判断Content是分配给窗口内容的?
如果我的方法有谬误,请告诉我。
【问题讨论】:
标签: c# wpf avalondock