2010-03-10 5 views
2

WPF 프로젝트의 UI 측에서 작업하고 있습니다. xaml'ing (stackoverflow :) 외에도) 현재 Adam Nathan의 "Windows Presentation Foundation Unleashed"이 내가 가장 좋아하는 참조입니다. 그는 컨트롤 템플릿에 대해 다음과 같은 팁을 제공합니다. "컨트롤 템플릿 내에서 ContentControl을 사용하는 대신 가벼운 ContentPresenter 요소를 사용해야합니다."경량 요소 - 요소의 무게를 어떻게 알 수 있습니까?

내가 함께 작업하는 개발자는 종종 내가 알고있는 모든 xaml'ing에서 가능한 가장 가벼운 요소를 사용하도록 알려줍니다.

내 질문에 대한 답변 : 다른 요소의 상대적 "가중치"가 무엇인지 어떻게 알 수 있습니까? RichTextBox와 TextBox 같은 분명한 것들이 있습니다. 그러나 StackPanel이 작업을 수행 할 수있는 상황에서 Grid보다 더 나은지 여부는 어떻게 알 수 있습니까?

요소/컨트롤의 시각적 트리가 "가중치"를 나타내는 좋은 지표입니까? 내가 뭘 더 볼 수 있니?

미리 감사드립니다.

답변

2

ContentPresenter와 ContentControl과 같은 항목에서는 상속 계층 구조를 확인할 수 있습니다. ContentPresenter는 FrameworkElement에서 파생되는 반면 ContentControl은 Control에서 파생됩니다.

기본적으로 Grid는 가장 복잡한 레이아웃 논리 (가장 유연한 이유)가 있으므로 일반적으로 다른 모든 패널은 작업을 완료 할 수 있으면 더 나아질 것입니다. 당신이 패널의 복잡성에 대한 구체적인 가이드를 원하는 경우에, 나는 적어도에서 가장 복잡한에 다음과 같은 순서로 나열합니다 :

  1. UniformGrid - 아이 크기도 패널의 정도를 계산하는 데 사용되지 않습니다
  2. StackPanel에 - 아이의 크기에 하나의 차원이
  3. WrapPanel 사용 - StackPanel의 비슷하지만 열/행의 넓은 요소로 좀 더 복잡한을 기억해야합니다.
  4. DockPanel - 하나의 요소 만 나머지 모든 공간을 차지할 수 있으므로 그리드보다 가볍습니다.
  5. 격자 - 가장 유연하고 따라서 가장 복잡한 레이아웃 알고리즘을 사용합니다.
+0

안녕하세요 아베 첫째로, 감사합니다. 답변 : "... 상속 계층 구조를 확인할 수 있습니다. ContentPresenter는 FrameworkElement에서 파생되지만 ContentControl은 Control에서 파생됩니다." 그래서 Control에서 파생되는 것은 FrameworkElement.Panel에서 파생되는 것보다 "무거운"것입니다. 컨트롤에 많은 기능이 포함 된 컨트롤 템플릿이 있기 때문에? : "그리드 - 가장 융통성이있어서 가장 복잡한 레이아웃 알고리즘을 사용합니다." 즉 유연성은 일반적으로 체중을 나타내는 좋은 지표이기도합니다. (내가 큰 소리로 생각하고있어, 내가 틀렸다면 정정 해!) – cfouche

+0

그래, 나는 당신의 모든 설명에 동의한다. 컨트롤이 템플리트 화되는 것은 실제로 그 컨트롤을 무겁게 만드는 것입니다.컨트롤의 시각적 트리를 글로벌 스타일로 다시 정의 할 수 있으므로 컨트롤 작성자는 추가 할 비주얼이 얼마나되는지 잘 모를 것입니다. –