有我想在this question中实现的东西的图片。
我尝试将TextBlock
和Button
放在WrapPanel
中,这适用于单行文本,但不适用于多行文本。
<WrapPanel>
<TextBlock
TextTrimming="WordEllipsis"
TextWrapping="WrapWithOverflow" .../>
<Button .../>
</WrapPanel>
下图显示了发生的情况。当TextBlock
文本变为两行时,第二行占据了第一行的整个宽度,这是合乎逻辑的。
我想把字符串按单词截断,用ItemsControl
加上WrapPanel
作为ItemsPanel
,但是文本可能会变长,而且没有超过2行的空间,所以我把TextTrimming="WordEllipsis"
放在那里;在这种情况下,剩余的文本将被修剪,按钮将位于第二行的末尾。
更新:嗯,事实证明这并不那么容易,我把我的用户界面改成了更简单的东西,比如在右边放一个圆形按钮。
1条答案
按热度按时间eimct9ow1#
如果您不介意使用
TextBox
代替TextBlock
,它有TextBox.GetRectFromCharacterIndex方法,通过索引号获得字符的矩形,您可以利用它相应地调整Button
的位置。以下只是一个概念证明,还有很大的修改空间。
XAML:
后面的代码: