【问题标题】:Setting height on side-by-side WPF controls在并排的 WPF 控件上设置高度
【发布时间】:2011-07-02 21:52:43
【问题描述】:

我有两个 WPF 边框,每个边框都包含一些我希望并排显示的内容,并且我希望应用以下高度规则:

(1) 左边框内控件的高度将决定两个控件的高度。 (2) 如果左侧边框内控件的高度小于 200,则两个边框的高度都应为 200(这是最小高度)。 (3) 如果左侧边框内控件的高度大于 200,则两个边框都应设置为不存在右侧边框时左侧边框的高度。然后,右侧边框将被拉伸或压缩以匹配左侧边框的需要。

这在 XAML 中是否可行,还是我必须使用一些代码?如果是这样,什么代码可以工作?

谢谢。

【问题讨论】:

    标签: wpf height


    【解决方案1】:

    您应该将右侧边框的高度绑定到左侧的 ActualHeight 并将两个边框的 MinHeight 设置为 200

    <Border x:Name="leftBorder" MinHeight="200"></Border>
    <Border MinHeight="200" Height="{Binding ElementName=leftBorder, Path=ActualHeight}"></Border>
    

    【讨论】:

    • 您好,感谢您的回答。它可以在一定程度上起作用,但是如果左边框的内容增长(超过 200)然后又缩小,就会出现问题。两个边框随着内容的增长而正确扩展,但是一旦内容再次缩小(这意味着左边框的高度应该缩小),两个边框不会缩小,它们只是保持现有的大小。
    • 在这种情况下,最好的办法是将边框设置为 VerticalAlignment=Top。这会将边框的底部边缘推到内容的底部。
    【解决方案2】:

    为了做这样的事情,你需要一个转换器,这意味着你必须使用一些代码。 将左右边框的高度设置为:

    Height="{Binding ElementName=leftcontrol,Path=ActualHeight,Converter=developedConverter}" 
    

    然后将边框高度的逻辑放入转换器主体中。

    【讨论】:

    • 所以我的想法是我使用 DevelopConverter 将内容大小转换为理想的边框大小?我猜这会起作用,例如通过向内容大小添加一些固定的已知常量,但是当普通的 WPF 布局管理器可以为我完成这项工作时,这听起来有点像软糖(即将边框设置为正确的大小其内容)。有什么想法吗?
    • 是的,如果它只是边框内内容的大小,您不必使用转换器,但我认为您有一个仅使用 WPF 布局管理器无法完成的逻辑。就像他的比较,你有。
    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2023-04-04
    • 2014-03-23
    • 1970-01-01
    • 2011-08-22
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多