允许控制增长,但不缩小

时间:2013-12-09 15:39:04

标签: c# wpf

我基本上有这样的设置:

<GroupBox>
  <TextBlock Name="tbValue"/>
</GroupBox>

TextBlock的内容经常更改(显示传感器的测量值)。这导致组合框的宽度一直在变化,看起来和感觉就像垃圾一样。

有没有人知道如何在文本更改时自动增长groupbox,但是每当文本再次缩短时,不会再次闪烁?

2 个答案:

答案 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}}属性设置为MinWidthMinWidth之间的最大值:

<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);
}