我有两个ObservableCollection<T>
让我们称之为List1和List2。 List1包含List2中的一些项目。
我想要做的是让DataGrid
CheckBoxColumn来勾选List1和List2中的项目。其他列显示项目的viewVodel的信息。
实现这一目标的最佳方法是什么?
顺便说一句DataGrid
在模板中定义,我正在以MVVM方式进行。
提前致谢
答案 0 :(得分:2)
您可以使用像
这样的转换器public class ItemToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Here value is the item from List 1
List<T> list2 = (List<T>)parameter;
return list2.Contains(value as T);
}
}
然后声明CheckBoxColumn
<DataGrid ...>
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding myItemfromList1, Converter={StaticResource ItemToBooleanConverter1}, ConverterParameter={StaticResource List2}}" />
</DataGrid.Columns>
</DataGrid>
您无法直接将List2绑定到converter参数,但您可以声明StaticResource或以编程方式创建将List2作为参数传递的转换器。