2011-05-10 4 views

답변

-1

현재 예제가 없지만 도움이 될 수있는 링크로 안내해 드릴 수 있습니다.

UIElement은 시각적 인 모양을 갖고 Silverlight에서 기본 입력을 처리 할 수있는 대부분의 개체에 대한 기본 클래스입니다.

FrameworkElement은 Silverlight 레이아웃에 참여하는 개체에 대한 공통 API 프레임 워크를 제공합니다. 또한 FrameworkElement는 Silverlight에서 데이터 바인딩, 개체 트리 및 개체 수명 기능 영역과 관련된 API를 정의합니다.

그렇다면 추가 기능에는 어떤 것이 있습니까? http://forums.silverlight.net/p/205863/482651.aspx

19

This is a good page for learning about WPF Architecture을 참조하십시오.이 대답은 WPF에만 적용됩니다. UIElementFrameworkElement 섹션을 확인하십시오. 시간이 있으면 나머지 섹션도 확인하십시오. 다음은 두 가지 레벨이 존재하는 이유를 설명하는 링크 된 페이지의 인용입니다.

이 시점까지는 PresentationCore 어셈블리에 구현 된 WPF의 "핵심"기능에 중점을 두었습니다. WPF를 구축 할 때 기본 요소 (예 : 측정 및 배열과의 레이아웃 계약)와 프레임 워크 (그리드와 같은 특정 레이아웃의 구현과 같은) 간의 명확한 분리가 바람직한 결과였습니다. 목표는 외부 개발자가 필요할 경우 자체 프레임 워크를 만들 수있는 스택의 확장 지점을 낮추는 것이 었습니다.

간단히 말해서, UIElement은 자신을 그리는 방법을 알고 있습니다 (Visual에서 파생 되었기 때문에). 또한 OnPreviewMouseDownOnMouseDownMeasureArrange을 구현하여 layout system의 일부와 같은 가상 메서드를 제공하여 routed events system을 사용할 수도 있습니다.

FrameworkElementUIElement에 정의 된 가상 메소드 중 일부를 구현하여 레이아웃 시스템을 확장합니다. 레이아웃 속성을 일관되게 설정하는 방법을 제공합니다 (예 : Margin 속성과 MinWidth 속성 또한 스타일을 지정할 수 있으며 data binding에 참여할 수 있습니다.

귀하의 질문에 대한 답변으로 추가 능력이 필요하면 FrameworkElement을 추가하십시오. 스타일, 바인딩 또는 사용하기 쉬운 레이아웃 시스템이 필요하다. 그렇지 않은 경우 FrameworkElement을 사용하면 약간의 오버 헤드가 있으므로 UIElement에서 파생됩니다. 이러한 Padding 같은 유용한 새로운 Templating 같은 기능의 레이어와 속성을 제공하기 때문에

또한, 당신은 (FrameworkElement에서 파생)를 Control 클래스를 살펴 있어야합니다.

inheritance hierarchy에 익숙해지면 다른 클래스에서 파생되기를 원할 수도 있습니다 (Visual보다 체인이 높지는 않을 수도 있음).

+0

나는 UIElement로부터 상속받는 것이 매우 광범위한 시나리오라고 생각하지 않습니다. UIElement가 부족한 DataContext 속성이 조만간 필요할 것이기 때문에 대부분 사용자가 FrameworkElement에서 파생되기를 원할 것입니다. – Fazi