이것들은 프로젝트에 추가 할 수있는 세 가지이며, 차이점을 이해할 수 있을지 잘 모르겠습니다. 예를 들어 모두 함께 작업 할 때 구성 요소 도구 상자에 나타나는 것처럼 보입니다.Form
. 각각의 일반적인 사용 시나리오는 무엇입니까? 그 차이점은 무엇입니까?
사용자 컨트롤, 사용자 지정 컨트롤 및 구성 요소 간의 주요 차이점은 상속 트리의 여러 수준에서 상속된다는 것입니다.
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
따라서 간단히 말해 다양한 옵션으로 사전 배선 된 기능의 양이 달라집니다.
다른 옵션을 언제 사용 하시겠습니까? (이들은 진리가 아니라 생각과 의견이다)
느슨하게 결합 된 제어 코드 및 UI
컨트롤에서 파생됩니다.
ResourceDictionary에서 UI를 정의합니다.
UI가 스킨 가능
동적 레이아웃 있음
다른 프로젝트에서 UI를 변경할 수 있습니다.
완벽한 도구 상자 지원
단일 컨트롤을 정의합니다.
보다 융통성있는
==============
밀접하게 결합 된 컨트롤 코드 및 UI
UserControl에서 파생됩니다.
UI를 일반 XAML로 정의합니다.
하위 컨트롤은 스킨 가능
정적 레이아웃 있음
UI가 고정되어 있으며 다른 프로젝트에서 다른 모양을 가질 수 없습니다.
도구 상자에 추가 할 수 없습니다.
컨트롤 세트를 정의합니다.
사용자 지정 컨트롤처럼 유연하지 않습니다.
Can't be added to the toolbox
- Jagoda Sokół
프레드릭이 말한 것에 덧붙여, 일반적으로 구성 요소와 사용자 정의 컨트롤은 프로젝트 전체에서 재사용을 계획 할 때 사용됩니다. 하나의 프로젝트에서만 사용자 컨트롤을 사용할 때 사용하십시오.
제 생각에 마지막 진술이 정확하지 않다고 생각합니다. 여러 가지 이유로 사용자 컨트롤을 만듭니다.
주된 이유는 말하자면 여러 컨트롤의 인터페이스를 디자인하는 경우입니다. 함께 그룹화.
먼저 클래스 라이브러리를 만든 다음 사용자 정의 컨트롤을 추가합니다. 이제 사용자 컨트롤이 어떻게 작동하는지 배후에서 로직의 일부를 변경해야 할 경우 매우 쉽게 할 수 있습니다. 또한이 클래스 라이브러리는 여러 번 사용할 수 있습니다.
또한 동일한 고급 라이브러리 내에서 여러 사용자 클래스를 공유 할 수 있으며 모든 사용자 컨트롤에 사용할 수 있습니다.
이것이 내가 사용자 컨트롤을 사용하는 주된 이유입니다. 그리고 사용자 정의 컨트롤이나 클래스 라이브러리를 변경하면됩니다. 일단 직장을 만들면 dll은 bin 디렉토리에서 동적으로 날짜를 표시합니다.
그래서 만약 내가 이것을 다른 프로젝트에서 참조하고 있다면 이러한 변경 사항은 새 프로젝트에서도 나타납니다.
또한 폼과 폼에로드 한 것과 동일한 페인트 루틴을 사용하지 않습니다.
따라서 사용자 컨트롤은 우리에게 매우 모듈화 된 기능을 제공합니다. 그리고 난 클래스 라이브러리의 기본 클래스를 공유하는 여러 사용자 컨트롤을 가질 수 ... 그래서 사용자 제어 목적은 단지 하나의 프로젝트를위한 것이 아닙니다. 그 점에는 아무런 제한이 없습니다. 제프
그들 사이의 주요 차이점은 -사용자 정의 컨트롤은 확장자가 .ascx 인 페이지 파일로, 단일 응용 프로그램 또는 프로젝트 내에서 사용되지만 사용자 지정 컨트롤은 여러 응용 프로그램에서 사용할 수있는 어셈블리 (dll 파일)입니다.
UserControl
은 실제로 "합성물"이다. 컨트롤 (다른 컨트롤로 만들어진 컨트롤) 인 반면 사용자 지정 컨트롤은 실제로 사용자가 디자인 한 컨트롤입니다. - Dave CousineauUserControl
? - Nick Alexeev