MouseEvent для определения строки в сетке WPF - PullRequest
2 голосов
/ 17 мая 2010

Я пытаюсь определить, в какой строке (RowDefinition) моя мышь находится внутри сетки WPF.

Я попытался добавить событие MouseEnter в RowDefinition, но событие не сработало, событие сработало на самой сетке, но это не помогло, поскольку мне нужно имя строки, над которой в данный момент находится мышь. 1003 *

Заранее спасибо.

1 Ответ

1 голос
/ 17 мая 2010

Ваш обработчик должен быть на каждом элементе, а не на самой сетке. Например. если у вас есть TextBlocks, вы можете установить обработчик, используя стиль:

<Grid Name="_grid">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.Resources>
        <Style TargetType="TextBlock">
            <EventSetter Event="MouseEnter" Handler="EventSetter_OnHandler" />
        </Style>
    </Grid.Resources>
        <TextBlock>a</TextBlock>
        <TextBlock Grid.Row="1">b</TextBlock>
        <TextBlock Grid.Row="2">c</TextBlock>
</Grid>

Тогда внутри обработчика вы знаете элемент из MouseEventArgs.Source. Сделайте GetValue(Grid.RowProperty), если вам нужно узнать номер строки, и если вам действительно нужно RowDefinition, получите его от Grid.RowDefinitions:

private void EventSetter_OnHandler(object sender, MouseEventArgs e)
{
    var element = (FrameworkElement) e.Source;
    var rowNumber = (int) element.GetValue(Grid.RowProperty);
    RowDefinition rowDefinition = _grid.RowDefinitions[rowNumber];
    e.Handled = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...