Получение информации о ячейке сетки при нажатии левой кнопки мыши - PullRequest
1 голос
/ 04 апреля 2011

Привет,

У меня есть таблица, к которой я добавляю строки и столбцы в соответствии с данными, предоставленными пользователем.

Теперь я хочу иметь событие, которое фиксирует местоположение моего щелчка мышью по строкам и столбцам. Поэтому, когда я нажимаю в столбце 5 строки 2, я хочу получить именно эту информацию в своем коде.

Однако все, что я пока получаю, это args.OriginalSource = {System.Windows.Controls.Grid}

Есть ли способ сделать это?

Xaml:

<Grid Background="White" x:Name="MainSchedular">
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="33" />
    </Grid.RowDefinitions>  
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="33">
        <ColumnDefinition Width="33">
        <ColumnDefinition Width="33">
</Grid>

Код:

this.MouseLeftButtonDown += (se, eas) =>
{
    //some code here that captures the row and column position
};

1 Ответ

1 голос
/ 05 апреля 2011

В случае, если людям интересно, как: мне удалось это сделать, создав кнопку и поместив ее в верхний левый угол сетки.

Используя эту кнопку в качестве ссылки для MouseButtonEventsArgs.GetPosition, я могурассчитать, по какой строке и столбцу я нажал:

double rowheigth = 0, columnlength = 0;
int row = 0, column = 0;
if (pos.X > this.TheGrid.ColumnDefinitions[0].ActualWidth && pos.Y > this.TheGrid.RowDefinitions[0].ActualHeight)
{
    while (rowheigth + this.TheGrid.RowDefinitions[row].ActualHeight < pos.Y)
    {
        rowheigth += this.TheGrid.RowDefinitions[row].ActualHeight;
        row++;
    }
    while (columnlength + this.TheGrid.ColumnDefinitions[column].ActualWidth < pos.X)
    {
        columnlength += this.TheGrid.ColumnDefinitions[column].ActualWidth;
        column++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...