如何内联嵌套属性的DataTemplate?

时间:2016-07-24 21:50:14

标签: wpf binding

假设我有:

class Employee
{
    public string Name;
    public string Id;
    // ...
}

<DataTemplate DataType="local:Employee"> ... </DataTemplate>

class Manager
{
    public string Salary;
    public int Rank;
    public Employee DirectReport;
}

在引用DataTemplate Manager时如何为Employee撰写DataTemplate

即:

<DataTemplate DataType="local:Manager">
   <TextBlock Text={Binding Salary}/>
   <TextBlock Text={Binding Rank}/>
   // How do I display the DirectReport here using Employee's DataTemplate?

</DataTemplate>

1 个答案:

答案 0 :(得分:1)

你可以通过简单的OO安装实现这一点,而不是使用WPF的任何棘手的事情。

Manager仍然是Employee,因此请更改您的课程:

public class Employee
{
    public string Name;
    public string Id;
    public string Salary;
    Employee DirectReport;
    // ...
}

public class Manager : Employee
{   
    public int Rank;   
}

然后你可以保留你的WPF DataTemplate。

或者,您可以使用ContentControl在ManagerTemplate中引用EmployeeTemplate定义:

<DataTemplate DataType="local:Manager">
    <TextBlock Text={Binding Salary}/>
    <TextBlock Text={Binding Rank}/>

    <ContentControl ContentTemplate="{StaticResource EmployeeTemplate}" /> 
</DataTemplate>

其他有用的参考资料是: