首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColumnDefinition在网格中的位置

ColumnDefinition在网格中的位置
EN

Stack Overflow用户
提问于 2017-05-08 17:50:00
回答 1查看 142关注 0票数 0

我正在尝试弄清楚ColumnDefinition是否知道它在Grid中的位置。

我有3个专栏,如下所示:

代码语言:javascript
复制
<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中的编号或位置的属性

EN

回答 1

Stack Overflow用户

发布于 2017-05-10 07:02:04

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

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

代码语言:javascript
复制
<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事件附加了相同的事件处理程序:BorderGridRectangle……每个控件都有一个相对于父Grid (Grid.RowGrid.Column)的位置,因此在事件处理程序中可以检查sender的AttachedProperty

代码语言:javascript
复制
private void OnMouseEnter(object sender, MouseEventArgs e)
{
    var element = sender as UIElement;

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

    // use columnIndex somehow...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43844576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档