2014-04-25 56 views

回答

4

儘管您需要使用實現IMultiValueConverter的轉換器才能使用它們,但您可以使用MultiBinding將屬性綁定到多個綁定。在這種情況下,您可能希望綁定到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> 
+0

+1瞭解可用選項的完整說明。而且,對於OP,除了他的問題外沒有提供任何內容:不是「我所嘗試過的」,也不是「謝謝」,沒有任何內容。 – zazkapulsk