我有一个名为Applicant的抽象对象和两个不同类型的对象,它们从申请人继承,称为Business和Individual。所以我有三个类看起来像这样:
public abstract class Applicant
{
...
}
public class Individual : Applicant
{
...
}
public class Business : Applicant
{
...
}
现在在DataGrid中我想显示Applicant对象的所有细节。当您选择一行时,我想将业务或个人的详细信息显示为内部网格。像这样的东西
<DataGrid>
<DataGrid.Columns>
<!--Show different columns -->
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<!--Show if Individual -->
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" ... />
<DataGridTextColumn Header="Last Name" ... />
</DataGrid.Columns>
</DataGrid>
<!--Show if business -->
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Business Name" ... />
<DataGridTextColumn Header="Tax id" ... />
</DataGrid.Columns>
</DataGrid>
</DataGrid.RowDetailsTemplate>
</DataGrid>
现在我不确定是否需要使用触发器或行为来完成此操作?感谢大家的帮助!仅供我使用Silverlight 4.0和Prism。
答案 0 :(得分:0)
我的用户都不使用:
答案 1 :(得分:0)
我认为你既不需要行为也不需要触发器,而是数据绑定。有一个很简单的介绍,msdn documentation中的数据绑定是什么。
你的cituation中唯一的一点是你的数据网格没有一个而是两个DataTemplates
,你需要动态更改它们。我找到了关于该主题的博客帖子和silverlight.net论坛帖子:Changing Data-Templates at run-time from the VM和forum。
第一个使用一些非常简单的代码隐藏逻辑,论坛中的一个使用IValueConverter
做同样的事情。