We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

How to bind the SelectedItems property of SfDataGrid to ViewModel property?

SfDataGrid.SelectedItems is a collection property. So, whenever the SelectedItems collection is changed, the property bound with SelectedItems does not get notified for this change. However, you can achieve this by creating an attached property for SelectedItems.

The following is an attached property created for SfDataGrid and the property value is updated based on SfDataGrid.SelectedItems.CollectionChanged event.

C#

SfDataGrid’s SelectedItems values are set to the attached property by using SelectedItems.Collectionchanged event.

The following is the ViewModel property bound to the attached property that you created in the above code example.

XAML

Now, whenever the SelectedItems collection is changed the ViewModel property gets notified via the attached property.

Sample Links:

WPF

WRT

UWP

Article ID: Published Date: Last Revised Date: Platform: Control: Product Version:
3070 01/02/2015 02/16/2016 WPF SfDataGrid 12.1.0.43
Did you find this information helpful?
Comments
Geoff Scott Nov 05, 2017

I tried this but the bound item does not receive the collection because it cannot convert to the target type

System.Windows.Data Error: 8 : Cannot save value from target back to source. BindingExpression:Path=SelectedItems; DataItem='MyControlViewModel' (HashCode=38423585); target element is 'SyfDataGrid' (Name='BtcGrid'); target property is 'SelectedItems' (type 'ObservableCollection`1') ArgumentException:'System.ArgumentException: Object of type 'System.Collections.ObjectModel.ObservableCollection`1[System.Object]' cannot be converted to type 'System.Collections.ObjectModel.ObservableCollection`1[MyClass]'.

Reply
Geoff Scott Nov 05, 2017

I tried this but the bound item does not receive the collection because it cannot convert to the target type

System.Windows.Data Error: 8 : Cannot save value from target back to source. BindingExpression:Path=SelectedItems; DataItem='MyControlViewModel' (HashCode=38423585); target element is 'SyfDataGrid' (Name='BtcGrid'); target property is 'SelectedItems' (type 'ObservableCollection`1') ArgumentException:'System.ArgumentException: Object of type 'System.Collections.ObjectModel.ObservableCollection`1[System.Object]' cannot be converted to type 'System.Collections.ObjectModel.ObservableCollection`1[MyClass]'.

Reply
Geoff Scott Nov 05, 2017

Also, The OnSelectedItemsChanged method is called multiple times after the first selection. This effectively renders any usage impractical.

Reply
Add Comment
You must log in to leave a comment

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.