【发布时间】:2012-02-13 23:42:42
【问题描述】:
我在其他控件的网格中放置了一个模板化按钮,其中包含一些内容(图像和文本块):
<SomeControl>
<Grid>
<SpecialButton/>
</Grid>
</SomeControl>
<Style TargetType="{x:Type local:SpecialButton}">>
...
<Setter Property="Template">
<Setter.Value>
...
<TextBlock/>
<TextBlock/>
</Setter.Value>
</Style>
“SomeControl”控件的宽度是动态的——也就是说——它可以根据屏幕宽度、容器宽度等动态变化。因此我使用另一种方法来计算“SpecialButton”的宽度。
只要按钮内的文本块不比按钮本身宽“SpecialButton”的大小与它的“SomeControl”容器完美匹配。
但是,如果 TextBlock 的文本比“SpecialButton”的宽度长,“SpecialButton”的右边框就会消失,并且按钮看起来很糟糕。话虽如此,“SpecialButton”的宽度仍然限制在其容器的宽度内,尽管绘图没有得到很好的计算。
我正在尝试找到一种方法来控制 TextBlock(甚至更好的是完整网格的宽度)而不定义绝对宽度,因此“SpecialButton”仍然可以很好地绘制并忽略它的儿童溢出。像 CSS 的 {overflow:hidden} 这样的东西会很棒......
注意:
我不能允许换行,因为“SpecialButton”高度也被包含(并手动计算)。
【问题讨论】:
-
如果你的按钮有一个最大宽度,并且你不能允许换行,你能允许截断吗?您想要的可接受和预期的最终结果是什么?您是否希望按钮继续增长直到填满容器的宽度,然后停止并截断文本?
-
另外,如果您对答案进行投票并将其标记为此类,您可能会吸引更多人对回答您的问题感兴趣。
-
是的,我可以允许截断,这正是我正在寻找的结果 - 文本将被截断以适应 当前 最大可用空间。
标签: wpf xaml wpf-controls