首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试网格ColumnDefinition?

如何测试网格ColumnDefinition?
EN

Stack Overflow用户
提问于 2011-11-29 17:15:26
回答 2查看 768关注 0票数 0

我正在做一种WPF的设计师。我想要找出我点击从网格控制中删除它的ColumnDefinition。我会照顾那些“在那个ColumnDefinition里”的孩子。是否可以从单击事件处理程序的sender参数中获取?现在我正在检查e.GetPosition是否在ColumnDefinition.ActualWidth的范围内,但我想知道是否有更好的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2011-11-29 18:05:55

在单击事件处理程序中:

代码语言:javascript
复制
int columnIndex = Grid.GetColumn((UIElement)sender);

其中,发送者是直接网格的子级。

票数 1
EN

Stack Overflow用户

发布于 2011-11-29 17:48:02

不管怎样,为什么你需要捕获ColumnDefinition上的点击?是虚拟的,它没有任何实际的正文,它只是对Grid的一个提示,告诉你如何布局它的内容。因此,您必须在content对象上设置处理程序,而不是在ColumnDefinition上。

关于WPF Grid如何工作的一些说明。当您将一些控件添加到网格中时,它们都将成为其子控件。

代码语言:javascript
复制
<Grid>
    <Button/>
    <TextBox/>
    <Label/>
</Grid>

它们都将显示出来,而与您如何配置Column或RowDefinitions无关。Column和RowDefinitions只告诉网格您希望如何标记其中的所有现有元素,但它们不是容器,它们不包含元素。

代码语言:javascript
复制
<Grid>
    <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="10"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions> 
    <Button/><!-- this is identical to Grid.Column="0"-->
    <TextBox Grid.Column="1"/>
    <Label Grid.Column="2"/>
</Grid>

在本例中,我们创建了三个ColumnDefinitions,即使从网格XAML中也可以看到,控件不在定义中。它们就像标尺参考线一样用来对齐内容。然后,在元素上设置附加属性,以告知网格您要将元素放置在何处。当网格开始布局时,它将看到有三个元素和三个ColumnDefinitions,并将尝试按照ColumnDefinitions所说的定位元素。但是如果你在运行时移除或更改ColumnDefinitions,网格将会以一种新的方式重新排列控件。如果你想隐藏一些元素,你必须隐藏它们,而不是ColumnDefinition。

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

https://stackoverflow.com/questions/8308278

复制
相关文章

相似问题

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