Ваш обработчик должен быть на каждом элементе, а не на самой сетке. Например. если у вас есть 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;
}