0

我试图弄清楚 a 是否ColumnDefinition知道它在里面的位置Grid

我有3列如下:

<Grid.ColumnDefinitions>
  <ColumnDefinition Name="Left" Width="120" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave"/>
  <ColumnDefinition/>
  <ColumnDefinition Width="120" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave"/>
</Grid.ColumnDefinitions>

<view:Button Grid.Column="0" x:Name="GoLeft" Visibility="Hidden"/>
<view:MarkBox Grid.Column="1" x:Name="MarkBox1"
              MinHeight="110" MinWidth="100" Width="100" Height="110"/>
<view:Button Grid.Column="2" x:Name="GoRight" Visibility="Hidden"/>

而且我想MouseEnter在两者上应用相同的功能,如果是 left 或 right 则执行不同的操作ColumnDefinition。是否ColumnDefinition有包含其编号或位置的属性Grid

4

1 回答 1

0

鼠标事件对GridColumn我不起作用。

但是每个UIElement孩子都Grid可以有一个鼠标事件处理程序。例如:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
    <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>

  <Border Grid.Column="0" Background="Red" MouseEnter="OnMouseEnter"/>

  <Grid Grid.Column="1" Background="Green" MouseEnter="OnMouseEnter"/>

  <Rectangle Grid.Column="2" Fill="Blue" MouseEnter="OnMouseEnter"/>
</Grid>

如您所见,我为MouseEnter不同控件上的事件附加了相同的事件处理程序: a Border、 a Grid、 a Rectangle... 每个控件都有相对于父级Grid( Grid.Row, Grid.Column) 的位置,因此在事件处理程序中您可以检查 AttachedProperty sender:_

private void OnMouseEnter(object sender, MouseEventArgs e)
{
    var element = sender as UIElement;

    var columnIndex = element.GetValue(Grid.ColumnProperty);

    // use columnIndex somehow...
}
于 2017-05-09T23:02:03.933 回答