c# - WPF 中的条件 DataGrid MultiBinding
问题描述
我在 WPF 窗口中有一个 DataGrid,它的 itemsSource 可能会根据条件而有所不同。如果条件为真,则 itemsSource 被设置为类型 A 的对象列表,否则设置为类型 B 的对象列表。在 DatagridColumns 我有一些 DataGridTextColumn 应该根据 itemsSource 的类型绑定到 classA 或 classB 的成员。
<DataGrid x:Name="MyDataGrid">
<DataGrid.Columns >
<DataGridTextColumn Header="Title">
<DataGridTextColumn.Binding>
<MultiBinding>
<Binding Path= "MemberOfClassA"/>
<Binding Path= "MemberOfClassB"/>
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
在我的 C# 代码中,我有:
ClassA
{
public string MemberOfClassA {get;set;}
...
}
ClassB
{
public string MemberOfClassB {get;set;}
...
}
List<ClassA> listA = ...;
List<ClassB> listB = ...;
MyDataGrid.ItemsSource = condtion? listA : listB;
如何为 MultiBinding 实现转换器以根据条件选择绑定路径。任何替代建议也将不胜感激。
解决方案
如果数据网格的列将不同,那么更改列绑定将相当混乱。
您可以创建两个用户控件,每个控件都有一个数据网格。给你一个适合每个人的数据网格。
将内容控件的内容切换到适当的内容。
通过使用数据模板选择器或将两个集合放入两种不同的视图模型类型并使用数据类型选择适当的用户控件作为数据模板。
推荐阅读
- xamarin.ios - xamarin.ios Scrollview 和 Editor 滚动编辑器
- javascript - 避免在Vue模板中重复模式
- c# - Datagridview 到 CSV 未正确保存
- python - 如何在 HoloViews 中获取小部件“处理程序”
- symfony - 在 Twig 中打印包含需要依次打印的子变量的变量
- css - 更改 wordpress 中的字体系列覆盖 WPBakery 页面构建器
- arrays - 如何在 PostgreSQL 中创建类型?
- apache-spark - 分别配置 Spark 和 Hadoop(haddop 和 spark 使用哪个版本)
- madge - Madge 跳过导入的打字稿文件
- powershell - 删除 Pester 模拟函数