programing

사용자 제어 라이브러리와 커스텀 제어 라이브러리의 차이점은 무엇입니까?

stoneblock 2023. 4. 24. 21:10

사용자 제어 라이브러리와 커스텀 제어 라이브러리의 차이점은 무엇입니까?

WPF에 대한 자세한 내용을 설명하려고 합니다.재이용 가능한 WPF 컨트롤을 작성하려고 합니다.

Visual Studio에서 프로젝트를 만드는 옵션을 보면 "WPF User Control Library" 및 "WPF Custom Control Library"가 표시됩니다.그 차이점이 무엇인지 불분명하고 구글 검색에서도 제대로 된 설명이 나오지 않았다.

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

실제로는 사용자 제어에 XAML을 사용할 수 있는 반면 사용자 제어는 코드 수준에서 구현하는 것입니다.커스텀 컨트롤은 WPF 제어 기반 클래스 중 하나를 확장하고 코드를 통해 추가 기능을 제공하기 때문에 추가된 모든 로직과 표현을 코드 내에 구현해야 합니다.

사용자 컨트롤은 기술적으로 코드의 일부 부분에서 확장할 수 있는 일반적인 콘텐츠컨트롤이지만 일반적으로 사용자 컨트롤 내부에 다른 컨트롤을 배치함으로써 확장됩니다.Kent가 언급했듯이 UserControl은 다른 컨트롤의 집합체입니다.이로 인해 사용자 컨트롤로 수행할 수 있는 작업이 상당히 제한됩니다.풀 커스텀 컨트롤보다 사용하기 쉽지만 제한적입니다.

이러한 컨트롤은 런타임 관점에서 약간의 차이가 있습니다.애플리케이션을 빌드하고 UserControl을 배치할 때 컨트롤 트리의 내부에 구체적인 UserControl 템플릿이 있습니다.특별한 버튼의 재미없는 예를 생각해 봅시다.하고 있는 「유저 컨트롤」의 「유저 컨트롤」에 을 추가해 주세요」의 「유저 컨트롤」에 합니다.<UserControl>컨트롤을 .커스텀 컨트롤을 사용할 때는 버튼에서 컨트롤 자체를 얻을 수 있습니다.차이는 논리 트리에서 확인할 수 있습니다.

커스텀 컨트롤은 다음과 같은 논리 트리를 제공합니다.

    • 커스텀 버튼

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

    • 커스텀 버튼 사용자 제어
      • 단추

즉, UserControl은 일반적인 ContentControl일 뿐이며, 이를 위해 콘텐츠를 미리 정의할 수 있습니다.커스텀 컨트롤은 XAML의 이점이 아닌 코드로 모든 논리 및 상호작용을 수행해야 하므로 구현이 용이하다는 단가로 유연성을 향상시킵니다.

하지만 Visual Studio 템플릿에는 큰 차이가 없는 것 같습니다.대부분의 경우 Visual Studio 사용자 정의 컨트롤은 빈 사용자 정의 컨트롤로 프로젝트를 생성하지만 사용자 제어 프로젝트는 빈 사용자 제어가 있는 프로젝트입니다.나중에 프로젝트에 모든 종류의 항목을 추가할 수 있습니다.

갱신하다

커스텀 컨트롤과 사용자 컨트롤을 사용하는 타이밍에 대해서는 논리 트리의 추가 컨트롤 요소가 번거롭지 않으면 사용자 컨트롤을 사용하여 작성과 유지보수가 훨씬 쉬워진다고 생각합니다.사용자 컨트롤을 사용하지 않을 이유가 있는 경우에만 사용자 정의 컨트롤을 사용하십시오.

A Control 가능 스키너블(비호환 가능)은 스키너블(비호환 가능)인 동작을 .UserControl으로 보다 의 집합체입니다.Control어플리케이션 고유의 것.

자세한 내용은 이쪽.

사용자 제어 라이브러리, 커스텀 제어 라이브러리 및 WPF 클래스 라이브러리 템플릿의 차이

두 라이브러리 템플릿의 주요 차이점은 하나는 기본 빈 사용자 컨트롤이 있고 다른 하나는 기본 빈 사용자 컨트롤이 있다는 것입니다.둘 다 WPF 클래스 라이브러리입니다.두 프로젝트 모두 0개 이상의 사용자 컨트롤과 0개 이상의 사용자 컨트롤이 포함될 수 있습니다.

또한 Novitchi S와 Cameron Macfarland가 별도로 게시한 바와 같이 커스텀 컨트롤 라이브러리에는ThemeInfo표준횡단 속성을 사용하여 컨트롤에 대한 기본 스타일/템플릿 위치를 확인할 수 있습니다.

사용자 컨트롤과 커스텀 컨트롤의 차이점

사용자 컨트롤은 WPF 컨트롤(기타 사용자 컨트롤 포함)의 집합체이며 커스텀 컨트롤은 컨트롤에서 파생된 클래스입니다.

이 MSDN 기사에서는 사용자 컨트롤 개발, 커스텀컨트롤 또는 프레임워크 요소에서 파생되는 타이밍 중 하나를 선택하는 방법에 대해 다음과 같은 권장사항을 제시합니다.

하는 것을 고려해 보세요.UserControl다음과 같이 합니다.

  • 애플리케이션을 작성하는 방법과 마찬가지로 컨트롤을 구축하려고 합니다.
  • 컨트롤은 기존 컴포넌트로만 구성됩니다.
  • 복잡한 커스터마이즈를 지원할 필요가 없습니다.

에서 도출하는 것을 검토하다Control다음 중 하나에 해당하는 경우:

  • ControlTemplate를 사용하여 컨트롤 모양을 사용자 지정할 수 있습니다.
  • 컨트롤이 다른 테마를 지원하기를 원합니다.

에서 도출하는 것을 검토하다FrameworkElement다음 중 하나에 해당하는 경우:

  • 단순한 요소 구성에 의해 제공되는 것 이상으로 컨트롤의 모양을 정밀하게 제어하려고 합니다.
  • 고유한 렌더링 논리를 정의하여 컨트롤의 모양을 정의하려고 합니다.

다른 StackOverflow 응답으로부터의 기타 적절한 조언은 다음과 같습니다.

Reed Copsey는 "User Controls는 다른 컨트롤로 구성된 일련의 기능을 만들기 위해 여러 WPF 컨트롤을 함께 구성하는 것을 의미합니다."라고 설명하고 "Custom Controls의 필요성은 실제로 WPF에서 매우 드물지만,WPF 템플릿 옵션 및 부속 속성을 통해 표준 제어로 거의 모든 작업을 수행할 수 있기 때문입니다."

Mikko Rantanen은 마찬가지로 "커스텀 컨트롤과 사용자 컨트롤을 사용하여 논리 트리의 추가 컨트롤 요소가 방해가 되지 않는 경우 사용자 컨트롤을 사용하여 작성 및 유지보수가 훨씬 쉬워집니다."라고 의견을 공유합니다.

언급URL : https://stackoverflow.com/questions/807703/what-is-the-difference-between-a-user-control-library-and-a-custom-control-libra