Вы можете определить как Поведение, которое использует свойство SelectedItems DataGrid. SelectedItems не является DepedencyProperty, поэтому вы не можете сделать это с полки.
public class DataGridSelectedItemsBehavior:Behavior<DataGrid>
{
protected override void OnAttached()
{
AssociatedObject.SelectionChanged += SelectionChanged;
}
protected override void OnDetaching()
{
AssociatedObject.SelectionChanged -= SelectionChanged;
}
void SelectionChanged(object sender, SelectionChangedEventArgs e)
{
SelectedItems = AssociatedObject.SelectedItems;
}
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register(nameof(SelectedItems), typeof(IEnumerable), typeof(DataGridSelectedItemsBehavior),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public IList SelectedItems
{
get { return (IList)GetValue(SelectedItemsProperty); }
set { SetValue(SelectedItemsProperty, value); }
}
}
Теперь вы можете добавить поведение в вашем Xaml как
<i:Interaction.Behaviors>
<behaviors:DataGridSelectedItemsBehavior SelectedItems="{Binding SelectedItems, Mode=OneWayToSource}" />
</i:Interaction.Behaviors>
И в вашей ViewModel
public IEnumerable<object> SelectedItems { get; set; }