C# WPF:创建UserControl还是CustomControl?

C# WPF:创建UserControl还是CustomControl?,c#,wpf,xaml,user-controls,custom-controls,C#,Wpf,Xaml,User Controls,Custom Controls,我不太清楚何时使用CustomControl和何时使用UserControl。我基本上知道CustomControl允许什么(与模板一起使用时进行更多自定义) 我想在WPF(显示当前路径的文本块+触发“打开文件对话框”的按钮)中创建一个“文件浏览”控件 我不确定,因为在某些地方,我发现他们说这应该总是“替换”WPF控件。我更倾向于认为CustomControl更像是一种显示和编辑一个新语义值(在我的例子中是“文件(路径)”)的方式 那么,如果我们不考虑哪一个更容易实现,那么对于我所说的“File

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

我想在WPF(显示当前路径的文本块+触发“打开文件对话框”的按钮)中创建一个“文件浏览”控件

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

那么,如果我们不考虑哪一个更容易实现,那么对于我所说的“FileBrowse”控件,CustomControl和UserControl之间的哪一个更合适呢


谢谢

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

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


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

自定义控件:

  • 一个松散耦合的控件w.r.t代码和UI
  • 源于控件
  • 在ResourceDictionary中定义UI
  • 用户界面可以在不同的项目中更改
  • 具有完整的工具箱支持
  • 定义单个控件
  • 更加灵活
用户控件:

  • 紧密耦合的控件w.r.t代码和UI
  • 从用户控件派生
  • 将UI定义为普通XAML
  • UI是固定的,在不同的项目中不能有不同的外观
  • 无法添加到工具箱中
  • 定义一组控件
  • 不像自定义控件那样灵活
当我们谈论差异时,更重要的是强调上下文何时使用什么:

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

是的,但事实上,使用此控件,并不是绝对安排控件,而是提供一个可用于编辑
文件路径的控件。J4N:当然,如果您愿意,您可以构建
自定义控件,但是构建
用户控件可能就足够了,而且可能更简单。您有没有一些示例“当您想要实现一些附加功能时”,因为使用UserControl,您还可以添加一些新功能?自定义控件-例如带有支持主题的系统掩码的日期选择器。UserControl-带有附加按钮的日期选择器。