这些是你可以添加到项目中的三个不同的东西,我不太确定我是否理解其中的差异。例如,当使用Form
时,它们似乎都显示在组件工具箱中。每种方法有哪些常见的使用方案?有什么区别?
答案 0 :(得分:147)
User Control,Custom Control和Component之间的主要区别在于它们从继承树中的不同级别继承:
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
因此,简而言之,您可以通过不同的选项获得不同数量的预接线功能。
您何时会使用不同的选项? (这些是思想和观点,而不是真理)
答案 1 :(得分:4)
松散耦合的控制w.r.t代码和UI
从控制派生
在ResourceDictionary中定义UI
UI是可换肤的
具有动态布局
可以在不同的项目中更改UI
拥有完整的工具箱支持
定义单个控件
更灵活
==============
紧密耦合的控制w.r.t代码和UI
从UserControl派生
将UI定义为普通XAML
儿童控件是可换肤的
有静态布局
用户界面是固定的,在不同的项目中不能有不同的外观
无法添加到工具箱
定义一组控件
不像自定义控件那样灵活
答案 2 :(得分:2)
除了Fredrik所说的,当你计划在项目中重用它们时,通常会使用组件和自定义控件。只在一个项目中使用用户控件时使用用户控件。
答案 3 :(得分:0)
我认为最后的陈述在我看来并不正确。 我出于许多不同的原因创建了用户控件。
主要原因是,如果说我设计了多个控件的界面 组合在一起。
我首先创建一个类库,然后向其添加用户控件。 现在,如果我需要更改用户控件如何工作的逻辑的任何部分,我可以很容易。此类库也可以多次使用。
同样在同一个经典库中,我可以拥有多个可以共享的类,并用于我的任何用户控件。
这是我使用用户控件的主要原因。 如果您对用户控件或类库进行了更改。 一旦你建立了这份工作。 dll将在bin文件夹中动态更新日期。
所以如果我在另一个项目中引用它 这些变化也将出现在新项目中。
此外,它不会使用与表单相同的绘制例程以及表单上加载的任何内容。
因此,用户控件使我们能够非常模块化 我可以有多个用户控件,共享类库的基础类... 因此,用户控制目的不适用于一个项目。它在这方面没有限制。 杰夫
答案 4 :(得分:-4)
他们之间的主要区别 - User Control是一个扩展名为.ascx的页面文件,只能是 在单个应用程序或项目中使用但自定义控件是可在多个应用程序中使用的程序集(dll文件)。