[wpf] 사용자 제어 라이브러리와 사용자 정의 제어 라이브러리의 차이점은 무엇입니까?

WPF 속도를 높이고 재사용 가능한 WPF 컨트롤을 만들고 싶습니다.

Visual Studio에서 프로젝트를 만들기위한 옵션을 보면 “WPF 사용자 컨트롤 라이브러리”및 “WPF 사용자 지정 컨트롤 라이브러리”가 표시됩니다. 그들 사이의 차이점과 내 Google 검색이 적절한 설명을하지 않은 것은 분명하지 않습니다.

나는 그들 사이의 차이점을 이해하고 이상적으로 사용하는 경우의 예를 이상적으로보고 싶습니다.



답변

실제로 사용자 지정 컨트롤은 코드 수준에서 구현하는 반면 사용자 컨트롤에는 XAML을 사용할 수 있습니다. 사용자 지정 컨트롤은 WPF 컨트롤 기본 클래스 중 하나를 확장하고 코드를 통해 추가 기능을 제공하므로 추가 된 모든 논리 및 표현을 코드 내에 구현해야합니다.

사용자 정의 컨트롤은 기술적으로 일반적인 콘텐츠 컨트롤로 코드의 일부 부분에서 확장 할 수 있지만 일반적으로 그 안에 다른 컨트롤을 배치하여 확장됩니다. Kent가 언급했듯이 UserControl은 다른 컨트롤의 집합입니다. 이것은 사용자 컨트롤로 할 수있는 일을 상당히 제한합니다. 사용하기가 쉽지만 완전한 사용자 지정 컨트롤보다 제한적입니다.

이러한 컨트롤은 런타임 관점과 약간 다릅니다. 응용 프로그램을 빌드하고 UserControl을 응용 프로그램에 배치 할 때 제어 트리에는 그 안에 구체적인 UserControl 템플릿이 있습니다. 우리가 특수 버튼의 절름발이 예를 고려한다면. 사용자 정의 컨트롤을 사용하는 경우 <UserControl>요소 안에 버튼을 추가합니다 . 사용자 정의 컨트롤을 사용할 때 가장 가능성이 큰 버튼에서 컨트롤 자체를 파생시킵니다. 차이점은 논리 트리에서 볼 수 있습니다.

사용자 정의 컨트롤은 다음과 유사한 논리 트리를 제공하지만

  • 창문
    • CustomButton

UserControl은 논리 트리를 제공합니다.

  • 창문
    • CustomButtonUserControl
      • 단추

결국 UserControl은 일반적인 ContentControl 일 뿐이며 약간 확장 할 수 있고 콘텐츠를 미리 정의 할 수 있습니다. XAML의 이점을 얻는 대신 코드에서 모든 논리와 상호 작용을 수행해야하므로 사용자 지정 제어는 구현이 쉬워 진 가격으로 유연성을 제공합니다.

그럼에도 불구하고 Visual Studio 템플릿에는 큰 차이가 없다고 생각합니다. Visual Studio 사용자 지정 컨트롤은 빈 사용자 지정 컨트롤이있는 프로젝트를 만드는 반면 사용자 컨트롤 프로젝트는 빈 사용자 컨트롤이있는 프로젝트 일 가능성이 높습니다. 나중에 프로젝트에 모든 종류의 항목을 추가 할 수 있습니다.

최신 정보

사용자 정의 컨트롤과 사용자 컨트롤을 사용하는 시점에 대한 나의 의견은 사용자 컨트롤로 무언가를 할 수 있고 논리 트리의 추가 컨트롤 요소가 당신을 귀찮게하지 않으면 사용자 컨트롤을 사용하기가 훨씬 쉽다는 것입니다 만들고 유지하십시오. 사용자 정의 컨트롤을 사용하지 않는 이유가있는 경우에만 사용자 정의 컨트롤을 사용하십시오.


답변

A Control는 스킨 가능 (템플릿 가능) 인 일부 동작을 나타내는 반면, a UserControl는 일반적으로 Control응용 프로그램에 고유 한 상위 레벨 집계입니다 .

자세한 내용은 여기를 참조하십시오 .


답변