如何将数据从父控件传递到WPF中的后代

时间:2011-06-22 20:02:37

标签: wpf

我正在编写一个WPF应用程序来显示公司的员工列表。我的视图模型基本上是一棵树。每家公司都有一份员工清单,每位员工都有一个地址:

Company
   Employee
      Address

Company对象的相应视图是CompanyViewControl,它是从ItemsControl派生的。在控件模板中,我将Items绑定到员工列表,并使用ItemsPresenter中的自定义EmployeeViewControl来显示每个员工的内容。

一切都很好。

现在我需要将一个特殊对象从CompanyViewControl传递给EmployeeViewControl。如何使用模板中定义/创建的EmployeeViewControl完成此操作?为了使事情变得更复杂,员工列表将加载到后台线程中。因此,当获取新员工时,CompanyViewControl必须将对象传递给刚刚添加的新控件。

我需要以这样的方式执行此操作,即我可以从视图模型的单个实例创建多个视图(即,CompanyViewControl的多个实例)。想象一下,该对象基本上是CompanyViewControl的父控件。

2 个答案:

答案 0 :(得分:0)

您可以使用RelativeSource,例如。

<Binding Path="SpecialCompanyInfo" RelativeSource="{RelativeSource TemplatedParent}">

答案 1 :(得分:0)

我不确定我是否理解正确,但我想到的第一个问题是“你为什么不使用HierarchicalDataTemplate?”。这通常是我个人模拟树形结构的方式。

至于将信息从父控件传递给子控件,您可以按类型创建一个relativesource绑定...这也可以通过控件工作,因为在逻辑树中,它们仍然是父控件。

离。

<local:ParentControl Tag="Something..can be a binding">
    <local:ChildControl Tag="{Binding Tag, RelativeSource={RelativeSource AncestorType={x:Type local:ParentControl}, Mode=FindAncestor}}"/>
</ContentControl>

我希望这会有所帮助。