Как получить значение e.RowColumnIndex события CellLongPress в элементе управления SfDataGrid?
Я нашел элемент управления DatGrid от Syncfusion и настроил его следующим образом:
<syncfusion:SfDataGrid x:Name="PasswdVw" Grid.Row="2"
Grid.Column="2" Grid.RowSpan="2" ItemsSource="{Binding PassWrd}" SelectedRow="{Binding SelPassRws, Mode=TwoWay}"
GridLinesVisibility="Both" SelectionMode ="Multiple"
NavigationMode="Row" HeaderRowHeight="35"
MaximumWidthRequest="1400" Margin="20,0,0,0"
CellLongPress="PasswdVw_CellLongPress">
и я хочу запускать код только в том случае, если щелкнуть определенный столбец. Итак, в коде у меня есть это:
private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
if(e.RowColumnIndex != 3)
{
return;
}
// continue with code here.
}
Но я всегда получаю сообщение об ошибке вe.RowColumnIndex
строка, в которой говорится:
Итак, как мне использовать соответствующий номер столбца илиMappingName
на что я нажал?
2 ответа
Согласно документации , имуществоDataGridCellLongPressEventArgs
class относится к классу с таким же именем, который содержит два целочисленных поля:RowIndex
иColumnIndex
, каждый типаSystem.Int32
(илиint
).
Поэтому вы не можете сравниватьRowColumnIndex
с целым числом, вместо этого вы можете сравнивать его члены только с другими целыми числами, например:
private void PasswdVw_CellLongPress(object sender, DataGridCellLongPressEventArgs e)
{
if(e.RowColumnIndex.ColumnIndex != 3)
{
return;
}
// continue with code here.
}
Судя по предоставленной вами информации, похоже, что проблема, с которой вы столкнулись, связана с TypeConversion. Похоже, вы пытаетесь преобразовать RowColumnIndex или DataGridColumn в целочисленное значение.
У вас есть возможность извлечь RowIndex или ColumnIndex из структуры RowColumnIndex. Альтернативно вы можете получить DataGridColumn из DataGridCellLongPressEventArgs. Используя DataGridColumn, вы можете получить доступ к MappingName. Пожалуйста, обратитесь к ссылке UG для получения дополнительной информации.
Фрагмент кода:
private void dataGrid_CellLongPress(object sender, Syncfusion.Maui.DataGrid.DataGridCellLongPressEventArgs e)
{
//To use column index and column index
if(e.RowColumnIndex.ColumnIndex != 3)
{
return;
}
//To use column mapping name
if (e.Column.MappingName == "EmployeeID")
{
return;
}
}