2

我的 WPF 应用程序中的数据绑定有问题。情况是:

我有两个控件,一个带有树视图,另一个带有列表中所选项目的详细视图。使用以下代码一切正常(绑定):

<avalonDock:LayoutAnchorablePaneGroup DockWidth="230" Orientation="Vertical">     
    <avalonDock:LayoutAnchorablePane Name="CTTreeLayout">
        <avalonDock:LayoutAnchorable Title="CTs">
            <treeControl:TreeViewUControl x:Name="TreeViewCTs">
            </treeControl:TreeViewUControl>
        </avalonDock:LayoutAnchorable>
    </avalonDock:LayoutAnchorablePane>
    <avalonDock:LayoutAnchorablePane Name="CTInfoLayout">
        <avalonDock:LayoutAnchorable Title="Información">
            <infoControl:EntityInfoUControl x:Name="InfoControl" SelectedItem="{Binding ElementName=TreeViewCTs, Path=CTViewModel.SelectedItem}">
            </infoControl:EntityInfoUControl>
        </avalonDock:LayoutAnchorable>
    </avalonDock:LayoutAnchorablePane>
</avalonDock:LayoutAnchorablePaneGroup>

所选项目是详细信息控件上的依赖属性。

现在,我正在使用 Avalondock 更改布局策略(您可以从代码中的 avalonDock 标记中看到)。这意味着使用模板选择器。布局工作正常,但绑定被破坏。这是实际的一段代码,每个控件都在其模板中:

<avalonDock:DockingManager.LayoutItemTemplateSelector>
    <layout:PanesTemplateSelector>
        <layout:PanesTemplateSelector.CTToolTemplate>
            <DataTemplate>
                <treeControl:TreeViewUControl x:Name="TreeViewCTs"/>
            </DataTemplate>
        </layout:PanesTemplateSelector.CTToolTemplate>
        <layout:PanesTemplateSelector.CTInfoToolTemplate>
            <DataTemplate>
                <infoControl:EntityInfoUControl x:Name="InfoControl" SelectedItem="{Binding CTViewModel.SelectedItem, ElementName=TreeViewCTs}"/>
            </DataTemplate>
        </layout:PanesTemplateSelector.CTInfoToolTemplate>
    </layout:PanesTemplateSelector>
</avalonDock:DockingManager.LayoutItemTemplateSelector>

我怎样才能更新绑定以再次工作?我试过 FindAncestor 没有成功。

编辑:

终于解决了。正如 Dean Chalk 所说,按照我的策略,我的目标是不可能实现的。经过几次头痛后,我重构了我的数据模型。现在我有一个包含树视图和详细信息视图的视图模型。我遵循 AvalonDock 2.0 MVVM 示例的结构。

样品在这里

4

1 回答 1

0

使用DataTemplate这样的你将只能绑定到DataContext运行时设置的任何内容。您将看不到另一个控件的可见性SelectedItem,并且您将无法使用ElementName绑定。

这类问题确实没有直接的解决方案,您需要仔细研究您的数据模型。

于 2013-04-22T09:06:49.193 回答