我正在编写一个WPF应用程序来显示公司的员工列表。我的视图模型基本上是一棵树。每家公司都有一份员工清单,每位员工都有一个地址:
Company
Employee
Address
Company对象的相应视图是CompanyViewControl,它是从ItemsControl派生的。在控件模板中,我将Items绑定到员工列表,并使用ItemsPresenter中的自定义EmployeeViewControl来显示每个员工的内容。
一切都很好。
现在我需要将一个特殊对象从CompanyViewControl传递给EmployeeViewControl。如何使用模板中定义/创建的EmployeeViewControl完成此操作?为了使事情变得更复杂,员工列表将加载到后台线程中。因此,当获取新员工时,CompanyViewControl必须将对象传递给刚刚添加的新控件。
我需要以这样的方式执行此操作,即我可以从视图模型的单个实例创建多个视图(即,CompanyViewControl的多个实例)。想象一下,该对象基本上是CompanyViewControl的父控件。
答案 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>
我希望这会有所帮助。