私はMVVMを使用しています。いくつかのコードを使用して、データグリッドをコレクションにバインドします。
<commonMVVMControls:GridControl DataContext="{Binding Path=ClientsListGrid,
Mode=TwoWay}"
それは DataGridControl クラスです:
public class GridControl : DataGrid
{
public GridControl()
{
this.DataContextChanged += new System.Windows.DependencyPropertyChangedEventHandler(GridControl_DataContextChanged);
}
void GridControl_DataContextChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
{
var bindingItemsSource = new Binding("ItemsSource");
bindingItemsSource.Source = this.DataContext;
this.SetBinding(DataGrid.ItemsSourceProperty, bindingItemsSource);
this.RowStyle = new Style(typeof(DataGridRow));
this.RowStyle.Setters.Add(new Setter(DataGridRow.IsSelectedProperty, new Binding("IsSelected")));
}
ViewModel のコード スニペット:
var selectedClient = this.ClientsListGrid.ItemsSource.Where(x => x.IsSelected);
if (!selectedClient.Any())
{
MessageBox.Show(Resource.Resource.UpdateUserError, Resource.Resource.Warning, MessageBoxButton.OK, MessageBoxImage.Stop,
MessageBoxResult.OK);
return;
}
var viewModel = new AddOrUpdateClientViewModel(_serviceContext, selectedClient.First());
それはうまくいきます。しかし、データグリッドを上下にスクロールすると、動作が停止し、IsSelected は常に false になります。