2010-03-25 3 views
0

XAML에서 한 요소의 높이를 다른 요소의 높이의 절반으로 바인딩하고 싶습니다. 코드 숨김에 변환기를 쓰지 않는 방법이 있습니까?변환기를 사용하는 것 외에 xaml 요소 바인딩 문에서 간단한 계산을 수행하는 방법이 있습니까?

예 : - 내가있어 무엇 ...

<Button Name="RemoveButton" Content="Remove Stage" Width="100" Height="{Binding ElementName=AddButton, Path=Height, Converter={StaticResource MyHalfHeightConverter}}"/> 

내가 무엇을하고 싶습니다 ... 내가 컨버터없이 결합 액이 있다고 생각하지 않습니다

<Button Name="RemoveButton" Content="Remove Stage" Width="100" Height="{Binding ElementName=AddButton, Path=(Height/2.0)}"/> 

답변

4

. 그러나 왜 그것을 사용하지 않습니까? 이와 같은 요구 사항을 종종 접하게 될 것이므로 일부 속성이나 매개 변수를 사용하는 일종의 MathConverter를 만드는 것이 좋습니다. 그런 다음 각 단일 요구 사항에 대해 별도의 변환기를 만들 필요가 없습니다.

그러나, RemoveButton는 한 행 차지하면서 당신은 정말 당신은 또한 AddButton이 두 행에 걸쳐 확산되는 별 크기의 그리드를 사용할 수있는 레이아웃에 따라 컨버터를 사용하지 않으려면 :

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <Button Name="AddButton" Grid.Row="0" Grid.RowSpan="2" ... /> 
    <Button Name="RemoveButton" Grid.Row="1" ... /> 

</Grid> 
을 당신이 RemoveButton 수직 중심을하려면

이를 사용하십시오 RemoveButton 중앙 행에있는 동안

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*"/> 
     <RowDefinition Height="2*"/> 
     <RowDefinition Height="1*"/> 
    </Grid.RowDefinitions> 

    <Button Name="AddButton" Grid.Row="0" Grid.RowSpan="3" ... /> 
    <Button Name="RemoveButton" Grid.Row="1" ... /> 

</Grid> 

이 방법은 AddButton은 (총 4 *)를 세 행을 차지 (2 *).

하나의 공유 그리드에 추가 할 수없는 경우 Grid.IsSharedSizeScope 속성을 사용할 수 있습니다. 자세한 내용은 here을 참조하십시오.

관련 문제