我基本上有这样的设置:
<GroupBox>
<TextBlock Name="tbValue"/>
</GroupBox>
TextBlock的内容经常更改(显示传感器的测量值)。这导致组合框的宽度一直在变化,看起来和感觉就像垃圾一样。
有没有人知道如何在文本更改时自动增长groupbox,但是每当文本再次缩短时,不会再次闪烁?
答案 0 :(得分:3)
可以提出行为。原始样本
public class GrowOnlyWidthBehavior : Behavior<FrameworkElement>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SizeChanged += OnSizeChanged;
}
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
AssociatedObject.MinWidth = Math.Max(AssociatedObject.MinWidth, AssociatedObject.ActualWidth);
}
}
更新了行为。感谢 AndrewS 指出以前代码中的错误。我使用了 HighCore 的答案中的逻辑。
答案 1 :(得分:2)
只需处理SizeChanged
事件,并将GroupBox
的{{3}}属性设置为MinWidth
和MinWidth
之间的最大值:
<GroupBox SizeChanged="GroupBox_SizeChanged">
<TextBlock Name="tbValue"/>
</GroupBox>
代码背后:
private void GroupBox_SizeChanged(object sender, SizeChangedEventArgs e)
{
var gb = sender as GroupBox;
gb.MinWidth = Math.Max(gb.MinWidth, gb.ActualWidth);
}