Вы можете привязать свойство к нескольким привязкам, используя MultiBinding , хотя вам потребуется использовать конвертер, реализующий IMultiValueConverter , чтобы использовать их.В этом случае вы, вероятно, захотите привязать к Height, а не к ActualHeight, чтобы получить значение после выполнения макета.
Вы бы определили конвертер так:
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;
}
}
И затем сделайте что-то подобное в 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>