WPF:创建UserControl或CustomControl?

时间:2015-09-03 09:43:13

标签: c# wpf xaml user-controls custom-controls

我不清楚何时使用CustomControl以及何时使用UserControl。我基本上知道CustomControl允许什么(使用模板时更多自定义)。

我想制作一个"文件浏览" WPF中的控件(TextBlock显示当前路径+按钮,触发"打开文件对话框")。

我不确定,因为在某些地方我发现他们说这应该总是"替换" WPF控件。我更想到一个CustomControl更像是一种显示和编辑一个新语义值的方法(在我的例子中,一个"文件(路径)")。

因此,如果我们不考虑哪一个更容易做,那么在CustomControl和UserControl之间对于" FileBrowse"控制我说的话?

谢谢

3 个答案:

答案 0 :(得分:4)

自定义控制:

  • 松散耦合的控制w.r.t代码和UI
  • 来自控制
  • 在ResourceDictionary中定义UI
  • 可以在不同的项目中更改UI
  • 拥有完整的工具箱支持
  • 定义单个控件
  • 更灵活

用户控制:

  • 紧密耦合的控制w.r.t代码和UI
  • 从UserControl派生
  • 将UI定义为正常XAML
  • 用户界面固定,在不同的项目中不能有不同的外观
  • 无法添加到工具箱中
  • 定义一组控件
  • 不像自定义控件那样灵活

当我们谈论差异时,更重要的是强调背景何时使用

  • 如果您的UI中有快速且固定的内容,请使用UserControl。
  • 如果要将主视图的某些基本功能分离为具有可重用性的较小部分,请使用UserControl。
  • 如果要在不同项目中使用控件,并且每个项目可能想要更改外观,请使用CustomControl。
  • 如果要为控件实现一些其他功能,请创建从基本控件派生的CustomControl。
  • 如果要将主题应用于控件,请使用CustomControl。
  • 如果要为控件添加工具箱支持,以便用户可以拖放到设计器,请使用CustomControl。

答案 1 :(得分:0)

通常,自定义控件会扩展现有控件,而用户控件会从现有控件的集合中创建新控件类型。我会说根据您提供的信息,用户控件更适合。

答案 2 :(得分:0)

我认为UserControl是可供选择的,因为它用于一种“现有控件的组合”。在您的情况下,按钮和文件打开对话框。然后它将获得特定的外观(例如,按钮的默认外观和文件打开对话框的默认外观)。

CustomControl是另一种方式。它本身没有外观和感觉。关于布局,它是完全抽象的。当布局样式时,布局就会发挥作用。