2014-09-11 3 views
0

이것은 Silverlight입니다.HorizontalAlignment 및 VerticalAlignment를 처리하는 가장 간단한 FrameworkElement?

초기 목표는 몇 가지 VerticalAlignment 및 HorizontalAlignment가 포함 된 임의의 요소를 팝업에 표시하는 것입니다. VerticalOffset 또는 HorizontalOffset을 사용하고 싶지 않습니다. 복잡한 바인딩을 포함하여 실제로하고 싶은 것이 더 많기 때문입니다.

첫 번째 시도했다 :

<Popup> 
    <Button 
     Height="135" 
     HorizontalAlignment="Stretch" 
     VerticalAlignment="Bottom" /> 
</Popup> 

두 번째 시도했다 :

<Popup 
    Height="135" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Bottom"> 
    <Button /> 
</Popup> 

는 실패했다 : 버튼은 언제나 최고하지 스트레치에 (HorizontalAlignment로와 VerticalAlignment 작동하지 않았다).

<Popup> 
    <Border> 
     <Button 
      Height="135" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Bottom" /> 
    </Border> 
</Popup> 

을 그리고 그것은 노력하고 있습니다 :

그래서 간단한 FrameworkElement에서 요소를 캡슐화하는 생각을했다.

하지만이 예제에서 Border을 사용했다, 내가 Grid 및 기타 여러 FrameworkElement (하지만 캔버스 또는 뷰 박스 또는 팝업와) 함께 할 수 있었던 때. HorizontalAlignment 및 VerticalAlignment를 사용하여 다른 요소를 캡슐화하는 가장 단순하고 효율적이며 프로세서 친화적 인 투명 FrameworkElement가 무엇인지 알고 싶습니다. 그것은 :

  • 국경? (위의 예와 같이)
  • UserControl?
  • ContentControl?
  • ContentContainer?
  • 일부 맞춤형 기본 MyFrameworkElement? (대부분의 기본 구현에 도움이 필요할 수도 있음)
  • 그리드와 같은 뭔가?
+0

"래퍼 요소"가 필요할 때마다 나는 '테두리'를 사용합니다. 기본적으로 BorderThickness는 0이고 Background는 설정되지 않습니다. – Martin

+0

@Martin 현재 Border, UserControl, ContentControl 및 ContentContainer 사이에 주저합니다. ContentContainer는 다른 것보다 속성이 적기 때문에 노력하고 있습니다. –

답변

1

WPF 컨트롤에는 사용자와 상호 작용하는 단추 (예 : 단추 같은 사용자 클릭 허용 또는 텍스트 블록과 같은 텍스트 표시)와 이전 항목의 배치 및 레이아웃을 제어하는 ​​컨테이너가 있습니다.

컨테이너 컨트롤은 일반적으로 특정 방식으로 자식을 레이아웃하도록 설계되었습니다. 예를 들어 캔버스는 X, Y, 너비로 어린이를 배치합니다. & 높이 값. 각각은 특정 용도로 사용되므로 read the documentation or tutorials for these container controls이어야하며 각각의 작업에 적합한 방법을 선택하기 위해 각각의 작동 방식을 이해해야합니다.

귀하의 경우, 버튼이 팝업의 사용 가능한 모든 공간을 채우고 싶습니다 (분명하지는 않은 것 같습니다). 그리드가 기본적으로이 작업을 수행한다는 것을 알고 있습니다. 그래서 나는 다음과 같이 할 것입니다 :

<Popup><Grid><Button /></Grid></Popup> 
+0

아니요, 전체 공간을 채우지 않고 HorizontalAlignment 및 VerticalAlignment 속성 만 작동하도록하는 것입니다. * Border *, * ContentControl *, * UserControl * 및 * Grid *와 함께 작동합니다. 나는 그것들 중 어느 것이 가장 기본적이고 프로세서 친화적인지 알고 싶다. –

+1

@ Cœur "가장 기본적인"및 "프로세서 친화적 인"이 수준에서는 무의미합니다. 그러나 ContentControl은 모든 컨테이너의 기본 클래스이므로 하위 컨트롤의 위치를 ​​제어하지 않습니다. 그걸 사용하십시오. 그러나 메모리 또는 성능에 상당한 차이를 만들지는 않습니다. – Will