【发布时间】:2015-02-12 16:26:07
【问题描述】:
我将 ObservableCollection 绑定到 AvalonDock 2.0,其中集合中的每个项目都是 AvalonDock 文档。这就是我进行绑定的方式:
<ad:DockingManager DocumentsSource="{Binding Path=OpenProjects, Mode=TwoWay}" ActiveContent="{Binding Path=CurrentProject, Mode=TwoWay}" LayoutItemTemplateSelector="{StaticResource ProjectTemplateSelector}">
...
</ad:DockingManager>
问题是我想将每个项目的名称(在CurrentProject 中的属性Name 中指定)显示为文档标题。这是我尝试过的:
<ad:DockingManager.DocumentHeaderTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ad:DockingManager}, Path=ActiveContent, Mode=OneWay}" Text="{Binding Path=Name}" />
</DataTemplate>
</ad:DockingManager.DocumentHeaderTemplate>
如果我只打开一个文档,这可以正常工作,但是当我打开多个文档时,它们都会显示当前项目的Name。例如,如果我有四个打开的项目,名称分别为“A”、“B”、“C”和“D”,如果我当前正在查看文档“C”,则所有四个选项卡都将显示标题“C” ",而当我更改为文档“B”时,它们都会将其名称更改为“B”。
有没有办法防止这种变化?我尝试将绑定模式设置为OneTime,但似乎不起作用。
【问题讨论】:
标签: c# wpf mvvm avalondock