Any suggestion
Comments: ** Comment from web user: BoucherS **
Hi,
The problem has to be in your implementation. Try commeting portion of code to isolate the problem with Ctrl+A not selecting all rows.
I try your code (with some modifications) and Ctrl+A is selecting all rows.
Here's my code :
```
<my:DataGrid x:Name="GridX"
Background="White"
ItemsSource="{Binding Path=Xdata}"
SelectedItem="{Binding SelectedX}"
IsReadOnly="True"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserResizeColumns="True"
SelectionMode="Extended"
Margin="6,43,0,0"
HorizontalGridLinesBrush="LightGray"
VerticalGridLinesBrush="LightGray">
<my:DataGrid.RowStyle>
<Style TargetType="{x:Type my:DataGridRow}">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</my:DataGrid.RowStyle>
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="S.No" Binding="{Binding Path=SequenceNumber}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Notes" Binding="{Binding Path=Description}"></my:DataGridTextColumn>
</my:DataGrid.Columns>
</my:DataGrid>
```
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Xdata = new ObservableCollection<UserItem>()
{
new UserItem() { SequenceNumber = 0, Name = "Bob", Description = "Data1"},
new UserItem() { SequenceNumber = 1, Name = "Brian", Description = "Data2"},
new UserItem() { SequenceNumber = 2, Name = "Alex", Description = "Data3"},
new UserItem() { SequenceNumber = 3, Name = "Tom", Description = "Data4"},
new UserItem() { SequenceNumber = 4, Name = "Jerry", Description = "Data5"},
};
GridX.DataContext = this;
}
public ObservableCollection<UserItem> Xdata
{
get;
set;
}
public UserItem SelectedX
{
get;
set;
}
}
public class UserItem
{
public int SequenceNumber
{
get;
set;
}
public string Name
{
get;
set;
}
public string Description
{
get;
set;
}
}
public class DataGrid : DataGridControl
{
public bool IsReadOnly
{
get
{
return this.ReadOnly;
}
set
{
this.ReadOnly = value;
}
}
public bool AutoGenerateColumns
{
get
{
return this.AutoCreateColumns;
}
set
{
this.AutoCreateColumns = value;
}
}
public string HeadersVisibility
{
get;
set;
}
public bool CanUserResizeColumns
{
get;
set;
}
public Brush HorizontalGridLinesBrush
{
get;
set;
}
public Brush VerticalGridLinesBrush
{
get;
set;
}
public Style RowStyle
{
get;
set;
}
}
public class DataGridTextColumn : Column
{
public string Header
{
get
{
return (string)this.Title;
}
set
{
this.Title = value;
}
}
public Binding Binding
{
set
{
this.FieldName = value.Path.Path;
DataGridBindingInfo bindingInfo = new DataGridBindingInfo();
bindingInfo.Path = value.Path;
this.DisplayMemberBindingInfo = bindingInfo;
}
}
}
public class DataGridRow : DataRow
{
public static new readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(DataGridRow) );
public new bool IsSelected
{
get
{
return (bool)this.GetValue(DataGridRow.IsSelectedProperty);
}
set
{
this.SetValue(DataGridRow.IsSelectedProperty, value);
}
}
}
```