我需要在DataGrid中有一个带有复选框的列,供用户选择各种行(稍后将执行操作)。 GridS项目绑定到ObservableCollection。我最快的解决方案(不是最好的,但只是为了让它工作)我认为是从集合中的类继承,添加一个我可以绑定的IsSelected属性,并从那里工作。但是,我开始使用的集合已经实例化,并且向下转换/逆转对我来说不起作用。并且,重新创建派生类的集合是不可行的。
所以,我现在正在寻找一个简单的解决方案,可能在复选框列上有附加行为。我试图不花太多时间在这上面,所以我需要一些想法。
答案 0 :(得分:0)
我认为你所做的是一个很好的方法。您正在使用的子类是原始类的“ViewModel”。
但是,我在this post by Laurent Bugnion中找到了另一种方法,它使用SelectedItems
控件的DataGrid
集合,不幸的是,你无法直接绑定它,因为它不是DependencyProperty
,但他使用MVVMLight Toolkit中的EventToCommand
行为,并将SelectedItems
集合作为CommandParameter
传递。
我希望这会有所帮助;)
答案 1 :(得分:0)
我最终不得不这样做:
1)在TemplateColumn中使用CheckBox而不是DataGridCheckBoxColumn,因为DataGridCheckBoxColumn没有Checked&未经检查的事件要挂钩。
2)在复选框上为Checked和Unchecked事件创建一个行为类,每个事件都有单独的命令;我必须创建一个行为类,因为虽然CheckBox已经有一个Command属性,但似乎没有任何方法可以确定控件的已检查/未检查状态,除非用作CommandParameter,我需要传递信息.G /中的DataGrid绑定项。
3)从View传入对VM的引用,并将VM声明为代码隐藏的静态资源;我必须这样做才能使用复选框绑定我的VM中的命令,同时可以访问相同的Observab