실제로 사용자 지정 컨트롤은 코드 수준에서 구현하는 반면 사용자 정의 컨트롤에는 XAML을 사용할 수 있습니다. 사용자 지정 컨트롤은 WPF 컨트롤 기본 클래스 중 하나를 확장하고 코드를 통해 추가 기능을 제공하므로 추가 된 모든 논리 및 표현을 코드 내에서 구현해야합니다.
사용자 정의 컨트롤은 기술적으로는 코드의 일부 부분에서 확장 할 수 있지만 일반적으로 다른 컨트롤을 배치하여 확장됩니다. 따라서 Kent가 언급 한 것처럼 UserControl은 다른 컨트롤의 집합입니다. 이렇게하면 사용자 정의 컨트롤을 사용하여 수행 할 수있는 작업이 상당히 제한됩니다. 사용하기 쉽지만 전체 사용자 정의 컨트롤보다 더 제한적입니다.
이러한 컨트롤은 런타임 시점과 약간의 차이가 있습니다. 응용 프로그램을 빌드하고 UserControl을 배치 할 때 컨트롤 트리에는 내부에 구체적인 UserControl 템플릿이 있습니다. 그래서 우리가 전문화 된 버튼의 불충분 한 예를 고려한다면. 사용자 정의 컨트롤을 사용하는 경우 <UserControl>
요소 안에 버튼을 추가하십시오. 사용자 정의 컨트롤을 사용할 때 가장 자주 버튼에서 컨트롤 자체를 파생시킵니다. 차이점은 논리적 트리에서 볼 수 있습니다.
사용자 지정 컨트롤이 CustomButton
- 창
- 유사한 논리적 트리를 제공 할 수 있지만
해당 UserControl은
그래서 결국 UserControl을 당신이 조금 연장 할 수 있고있는 당신이 미리 정의 할 수 있습니다 만 보통은 ContentControl이다 내용. 사용자 지정 컨트롤은 XAML의 이점을 얻는 대신 코드에서 모든 논리 및 상호 작용을 수행해야하기 때문에 구현 유연성이 뛰어나 유연성을 제공합니다.
그러나 이것 이후로는 Visual Studio 템플릿에 많은 차이가 있다고 생각하지 않습니다. Visual Studio 사용자 지정 컨트롤은 빈 사용자 지정 컨트롤이있는 프로젝트를 만드는 반면 사용자 컨트롤 프로젝트는 빈 사용자 컨트롤이있는 프로젝트 일 가능성이 큽니다. 나중에 모든 종류의 항목을 프로젝트에 추가 할 수 있습니다.
업데이트
그리고 사용자 지정 컨트롤을 사용하여 사용자 컨트롤이시기에 대한 내 의견 당신이 사용자 제어 및 당신을 귀찮게하지 않습니다 논리적 트리에서 별도의 제어 요소 함께 할 뭔가를 얻을 수 있다면, 사용자 정의 컨트롤을 사용하면 훨씬 쉽게 만들고 유지 관리 할 수 있습니다. 사용자 정의 컨트롤을 사용하지 않을 이유가있는 경우에만 사용자 정의 컨트롤을 사용하십시오.
내용을 중첩하거나 컨트롤 템플릿을 옵션으로 변경하는 것을 잊지 마십시오. 사용자 정의 컨트롤을 작성하지 않고도 이런 식으로 컨트롤을 극적으로 변경할 수 있습니다. – MichaC
미카엘이 말한 바로 그 것이다. WPF의 가장 중요한 부분은 템플릿 기존 컨트롤이 큰 영향을 미칠 수 있다는 것입니다. 드물게 사용자 지정 컨트롤이 필요합니다. 이는 WinForms와 달리 컨트롤을 약간만 변경해도 새로운 파생 컨트롤이 필요했습니다. –
여전히 유용합니다. 다른 금의 배지를 가져라. – ouflak