问题标签 [columndefinition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
86 浏览

c# - 为什么 IsMouseOver 触发器不适用于 Grid ColumnDefinition?

目标:
我正在尝试创建一个手风琴风格Grid,仅使用几列(ColumnDefinition)。

预期行为:
当鼠标光标位于列上方时,ColumnDefinition Width应该会增加。2*它应该返回到1*它不是的时候。

预期行为,例如红色列上方的光标。

实际结果:
列不对其上方的光标作出反应。宽度保持固定,即1*


我试过的:

  • StyleGrid元素本身进行完全相同的测试(仅切换Grid Background属性代替ColumnDefinition Width,但仍然由相同的 触发IsMouseOver,它工作正常。)(在下面的第一次编辑中添加了与此相关的内容。)
  • Background="Transparent"属性添加到Grid元素,以防光标没有“粘”到。(当然,没有Background属性ColumnDefinition可以尝试相同的。)
  • 限制高度Rectangles以查看触发器是否发生在它们上方或在同一列但在它们上方/下方。把所有的Rectangles东西都去掉(然而,甚至看不到触发效果)。
  • 添加/删除首字母Setter Property="Width" Value="1*"Style.Triggers标签上方)
  • 明确指的是Style带有它的x:Key属性。
  • 在 WPF Core .NET 5.0 上尝试过。和 WPF .NET 框架 4.7.2。

我知道还有其他方法可以完成这项工作(将Column宽度保留为Auto并使用Widthsof Rectangles,或者可能更改Column Widths 代码隐藏中的通过事件)。但是使用宽度的行/列星形单位和单一样式似乎是完美的方式,无需编写任何额外的逻辑。我真的不明白为什么这行不通。我猜现在光标在列区域中根本无法识别,但我无法理解原因。


编辑:

0 投票
0 回答
39 浏览

c# - 在 wpf 中使用带有星号的列定义进行文本修剪

在我的第二个网格中,我在 Width="800" 处有一个列定义,我希望有类似 1* 的响应,并且我的文本会根据网格列的实际宽度的大小进行修剪。

例如:

我的文本在第一列中有一个 40x40 像素的图像。我的文字会很长,比如说 1000 像素

如果我的整体网格宽度为 1000 像素。

我将在第二列中有 200 像素,在第一列中有 800 像素,这将使我的文本修剪为 800 - 40 像素 = 760 像素

如果我的整体网格宽度为 500 像素。

我将在第二列中有 100 个像素,在第一列中有 400 个像素,这将使我的文本修剪为 400 - 40 像素 = 360 像素,

等等

你能帮我吗?

谢谢,奥利维尔