我正在尝试弄清楚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"/>我想要在这两个ColumnDefinition上应用相同的MouseEnter函数,如果它是针对左侧或右侧的,则执行不同的操作。ColumnDefinition是否具有包含其在Grid中的编号或位置的属性
发布于 2017-05-10 07:02:04
GridColumn上的鼠标事件对我不起作用。
但是Grid的每个鼠标子对象都可以有一个UIElement事件处理程序。例如:
<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事件附加了相同的事件处理程序:Border、Grid、Rectangle……每个控件都有一个相对于父Grid (Grid.Row,Grid.Column)的位置,因此在事件处理程序中可以检查sender的AttachedProperty
private void OnMouseEnter(object sender, MouseEventArgs e)
{
var element = sender as UIElement;
var columnIndex = element.GetValue(Grid.ColumnProperty);
// use columnIndex somehow...
}https://stackoverflow.com/questions/43844576
复制相似问题