DataGridCheckBoxColumn复选框显示两个列表交叉点

时间:2013-02-01 10:49:03

标签: wpf datagrid

我有两个ObservableCollection<T>让我们称之为List1和List2。 List1包含List2中的一些项目。 我想要做的是让DataGrid CheckBoxColumn来勾选List1和List2中的项目。其他列显示项目的viewVodel的信息。

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

1 个答案:

答案 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作为参数传递的转换器。

相关问题