C# WPF将一个元素的高度绑定到3个元素高度的总和

C# WPF将一个元素的高度绑定到3个元素高度的总和,c#,wpf,xaml,binding,height,C#,Wpf,Xaml,Binding,Height,有没有办法将3个元素的高度绑定到1个元素的高度上?您可以使用将属性绑定到多个绑定,尽管您需要使用转换器实现才能使用它们。在这种情况下,您可能希望绑定到高度而不是实际高度,以便在执行布局后获得值 您可以这样定义转换器: public class SumConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo

有没有办法将3个元素的高度绑定到1个元素的高度上?

您可以使用将属性绑定到多个绑定,尽管您需要使用转换器实现才能使用它们。在这种情况下,您可能希望绑定到高度而不是实际高度,以便在执行布局后获得值

您可以这样定义转换器:

public class SumConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return values.Cast<double>().Sum();
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        return null;
    }
}
公共类SumConverter:IMultiValueConverter
{
公共对象转换(对象[]值,类型targetType,对象参数,CultureInfo区域性)
{
返回值.Cast().Sum();
}
公共对象[]转换回(对象值,类型[]目标类型,对象参数,CultureInfo区域性)
{
返回null;
}
}
然后在XAML中执行如下操作:

<Control Name="C">
    <Control.Resources>
        <local:SumConverter x:Key="SumConverter"/>
    </Control.Resources>
    <Control.Height>
        <MultiBinding Converter="{StaticResource SumConverter}">
            <Binding Path="ActualHeight" ElementName="A" />
            <Binding Path="ActualHeight" ElementName="B" />
        </MultiBinding>
    </Control.Height>
</Control>

如果您只是想让控件的高度彼此保持固定比率,那么您可能需要使用具有星形大小的网格或具有共享大小组的多个网格。类似的方法可能会奏效:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="2*"/>
    </Grid.RowDefinitions>
    <Button Grid.Row="0">A</Button>
    <Button Grid.Row="1">B</Button>
    <Button Grid.Row="2">C</Button>
</Grid>

A.
B
C

您尝试过什么吗?如果您尝试布局元素,那么只需使用
网格
,它是专门为此设计的。如果您得到了答案,请将其标记为已接受的答案;这将有助于其他人。+1了解可用选项的完整说明。和-1e3感谢OP除了他的问题没有提供任何东西:没有“我尝试了什么”,没有“谢谢”,什么都没有。