2

我有两个ObservableCollection<T>,我们称它们为 List1 和 List2。List1 包含 List2 中的一些项目。我想做的是让DataGridCheckBoxColumn 勾选 List1 和 List2 中的项目。其他列显示项目的 viewVode 信息。

实现这一目标的最佳方法是什么?顺便说一句DataGrid,在模板中定义,我正在使用 MVVM 方式。提前致谢

4

1 回答 1

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 绑定到转换器参数,但您可以声明一个 StaticResource 或以编程方式创建将 List2 作为参数传递的转换器。

于 2013-02-01T15:19:12.663 回答