我真的不知道UserControl存在的原因。 MSDN文章讲述了一个:
提供一种创建控件的简单方法。
它在VisualTree - UserControl 和ContentPresenter中添加了两个无用的图层。如果您在MSDN文章中应用过滤器以隐藏继承和受保护的成员,您将看不到任何内容!
当您看到添加到UserControl的内容时,您通常会看到以下内容:
<UserControl ...>
<Grid>
...
</Grid>
</UserControl>
或
<UserControl ...>
<DockPanel>
...
</DockPanel>
</UserControl>
因此,您可以避免仅使用您在其中添加的图层使用UserControl:
<Grid ...>
...
</Grid>
或
<DockPanel ...>
...
</DockPanel>
并从您正在使用的类继承控件作为 xaml 中的根元素。
问:所以我想知道 - 我们使用UserControl获得了哪些利润?
答案 0 :(得分:1)
没什么,说实话。在我为WPF创建自定义控件的那些年里,我从未使用过UserControl。
如果您要创建自己的自定义控件,请使用ContentControl
或更适合派生的任何内容。 您希望在Visual Tree
中避免使用其他UI元素,因为它会影响您的应用程序性能。但是,如果你是初学者
来自MSDN
UserControl是一个ContentControl,这意味着它可以包含一个 任何类型的单个对象(例如字符串,图像或面板)。 有关更多信息,请参阅ContentControl类。
如果确实需要创建新控件,最简单的方法是创建一个派生自UserControl的类。在此之前,请考虑您的控件不支持模板,因此不支持复杂的自定义。但是,如果您希望通过向其添加现有元素来构建控件,那么从UserControl派生是一个合适的模型,类似于您构建应用程序的方式,以及您是否需要支持复杂的自定义。 (如果要在控件中使用模板,请改为从Control派生。)
答案 1 :(得分:0)
使用UserControl
的主要原因是可以将一些.NET控件和一些功能轻松封装到可重用的控件中。虽然您可以在任何需要的地方重复UserControl
内的XAML(如您所建议的那样),但添加UserControl
而不是许多.NET控件要简单得多。
然后你必须考虑更改UserControl
...而不使用UserControl
,你必须找到你使用标准.NET控件的所有地方(而不是使用UserControl
)并全部更新。只更新UserControl
。
此外,创建UserControl
比创建CustomControl
...更快更简单,您需要创建一个CustomControlLibrary
项目并定义CustomControl
} generic.xaml
中没有直接代码。
此外,声明UserControl
对于在使用MVVM开发方法时定义视图绝对是完美的。
最后,让我们来自微软......来自MSDN上的Control Authoring Overview页面:
就我个人而言,我不知道在没有UserControl
的情况下我会做什么,但每个开发者都会有自己的意见......这个答案只是我的。
答案 2 :(得分:-1)
其中一个好处是你可以创建一个自定义控件,你可以在不同的地方使用它。