wpf datagrid 获取选中行的行号
时间: 2024-10-24 19:11:49 浏览: 22
在WPF DataGrid中获取选中行的行号,你可以通过以下步骤操作:
1. 首先,需要在一个依赖属性或者方法中绑定DataGrid的IsSelected属性到一个集合,这样每当你选择或取消选择一行,这个集合就会更新。
```xaml
<DataGrid ItemsSource="{Binding YourDataSource}" AutoGenerateColumns="False">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
```
2. 创建一个方法来跟踪选中的行及其索引。可以使用`ObservableCollection<YourDataType>`的`CollectionChanged`事件来监听变化,并在事件处理程序中保存选中的行信息,例如:
```csharp
private ObservableCollection<DataGridViewRow> selectedRows = new ObservableCollection<DataGridViewRow>();
public int SelectedRowIndex
{
get { return selectedRows.Count > 0 ? (int)selectedRows.Last().Tag : -1; }
}
private void DataContext_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach(DataGridViewRow row in e.NewItems)
{
if(row.IsSelected)
selectedRows.Add(row);
}
}
else if(e.Action == NotifyCollectionChangedAction.Remove)
{
foreach(DataGridViewRow row in e.OldItems)
{
if(selectedRows.Contains(row))
selectedRows.Remove(row);
}
}
}
```
在这里,`selectedRows`集合保存了所有被选中的行,而`SelectedRowIndex`则返回最后一条被选中的行的索引。
阅读全文