WPF:创建 UserControl 还是 CustomControl?

WPF: Create a UserControl or a CustomControl?

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

我想在 WPF 中创建一个 "File browse" 控件(显示当前路径的 TextBlock + 触发 "Open File Dialog" 的按钮)。

我不确定,因为在某些地方我发现他们说这应该总是 "replace" WPF 控件。我更认为 CustomControl 更像是一种显示和编辑 one 新语义值的方式(在我的例子中,"File(path)")。

所以,如果我们不考虑哪一个更容易做,对于我所说的 "FileBrowse" 控件,CustomControl 和 UserControl 之间哪个更合适?

谢谢

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

我认为UserControl是可以选择的,因为它用于一种"assembly of existing controls"。在您的情况下,一个按钮和一个文件打开对话框。然后它将获得特定的外观和感觉(例如按钮的默认外观和文件打开对话框的默认外观)。

CustomControl 有点相反。它本身没有外观和感觉。关于布局,它是完全抽象的。布局开始发挥作用,wwhen when assigning a style to it.

自定义控件:

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

用户控制:

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

当我们谈论差异时,更重要的是强调上下文何时使用什么:

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