2009-06-29 4 views
1

XAML을 처음 사용했습니다. 따라서 제 질문에 오해가있을 수 있습니다.XAML - 바인딩 속성으로 전체 창에 상대적인 사용자 제어 위치 얻기

XAML usercontrol 전역 (창에 상대적인) 위치를 바인딩하여 현재 화면에 표시되는지 확인 할 수 있습니까? UserControl을가있는 ScrollViewer 내부에 삽입되고 내가 좋아하는 뭔가 생각 : (우리는 최소한으로 사용됩니다 직접적처럼) 아니, XAML에서 컨트롤의 "위치"를 얻을 수 없습니다

<UserControl x:Class="Test.MessageControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="300"> 
     <StackPanel > 
      <Label Name="LabelTest" 
      Content="{Binding RelativeSource={RelativeSource Self}, 
      Path=MAGIC-GOES-HERE-Location.Y }" /> 
     </StackPanel> 
    </UserControl> 

답변

2

. WPF에서 컨트롤에는 더 이상 "위치"속성이 없습니다. 컨트롤과 화면 요소에는 너비와 높이 속성 만 있으므로 창에있는 위치를 찾는 데 도움이되지 않습니다.

하지만 당신이 정말로 뭔가가 어디 있는지 알고 싶다면, 당신은 CAN 그림 그것을 부모 컨트롤의 속성을 사용하여. (이 더 이상이 작업을 수행 할 수있는 신뢰할 수있는 유일한 방법입니다 수 있도록 마이크로 소프트는했다.)

예 :
두 행 그리드를 가지고 있고, 당신의 UserControl 두 번째 행에있는 경우 - 당신을 첫 번째 행의 ActualHeight 속성을 UserControl의 "Location.Y"속성처럼 처리 할 수 ​​있습니다. 대신 컨트롤 자체를 찾아 위치를 제공합니다.

더 이상 주위를 둘러 볼 길이 없기 때문에 익숙해 져야 할 것입니다.

디자인의 어딘가에 <Grid> 요소를 사용하는 것을 고려하십시오. 매우 단순한 방법으로 컨트롤 위치에 대한 정보를 제공합니다. 동적으로 크기가 조정되는 HTML 표와 같이 더 똑똑한 버전처럼 작동합니다. 원하는 경우 모든 행 또는 열 또는 심지어 전체 표 자체의 ActualWidth 및 ActualHeight 속성을 검색 할 수 있습니다.