假设我有:
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>
答案 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>
其他有用的参考资料是: