2016-07-04 11 views
0

초보자를 xaml로 여기. 나는 너에게 모든 질문이있다.ActualHeight의 값을 얻는 방법, 결과를 ActualWidth로 피드하는 변환기로 전달

"ResourceMonitor"라는 UserControl이 있고 주변 작업 표시 줄의 크기가 조정될 때 (이미 작성되고 테스트 된 경우), 내 UserControl의 ActualWidth가 실제 배율의 1.5 배로 조정되는지 확인하려고합니다. (ActualHeight 스케일링 할 때 일관성있게 유지하기 위해).

RelativeSource를 사용하여 ResourceMonitor UserControl의 ActualHeight 크기를 검색 한 다음이를 해당 변환기의 매개 변수로 전달한 다음 너비에 할당하려고합니다. 이 작업을 수행하는 더 나은/쉬운 방법이 있습니까?

<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,2,0"> 
    <rm:ResourceMonitor Margin="0,0,4,0" 
        ShowMemoryTrace="True" 
        MemoryTraceColor="#FF3399FF" 
        Width="{Binding Path = {Path=ActualHeight, RelativeSource={RelativeSource Self}}, Converter={StaticResource ResourceMonitorWidthScalingConverter}}"> 
    </rm:ResourceMonitor> 
    <Viewbox> 
     <StackPanel Orientation="Horizontal"> 
      <local:ServerStatus DataContext="{Binding ServerStatusViewModel}"/> 
     </StackPanel> 
    </Viewbox> 
</StackPanel> 

나는 하나 "유형의 경로가 태그 확장처럼 사용되지만 MarkupExtension에서 파생하지 않는다"말하고, 여기에 몇 가지 오류를 얻고있다

는 "아규먼트 이름이 없습니다"

도와주세요 :/

답변

1

귀하의 바인딩 표현이 잘못 작성되었습니다.

Width="{Binding Path=ActualHeight, RelativeSource={RelativeSource Self}}, 
       Converter={StaticResource ResourceMonitorWidthScalingConverter}}" 

MVVM의 경우 변환기를 사용하는 것이 좋습니다. 그러나 코드 숨김에 신경 쓰지 않는다면 이벤트를 처리하여 코드 숨김으로 처리 할 수 ​​있습니다. 그러나 심각하게, 변환기를 사용하는 것이 훨씬 쉽습니다.