我有两个ObservableCollection<T>
,我们称它们为 List1 和 List2。List1 包含 List2 中的一些项目。我想做的是让DataGrid
CheckBoxColumn 勾选 List1 和 List2 中的项目。其他列显示项目的 viewVode 信息。
实现这一目标的最佳方法是什么?顺便说一句DataGrid
,在模板中定义,我正在使用 MVVM 方式。提前致谢
您可以使用转换器,例如
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 绑定到转换器参数,但您可以声明一个 StaticResource 或以编程方式创建将 List2 作为参数传递的转换器。