XAML基类:用户控件,与其他控件

时间:2013-11-21 09:50:12

标签: wpf xaml custom-controls

通过继承UserControl在XAML中实现自定义控件有哪些好处和缺点:

<UserControl x:Class="MyButton" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Button>
    <!-- custom content here -->
    <!-- custom behaviors in the code behind -->
  </Button>
</UserControl>

vs从我正在放入UserControl

的控件中继承
<Button x:Class="MyButton" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <!-- custom content here -->
    <!-- custom behaviors in the code behind -->
</Button>

1 个答案:

答案 0 :(得分:1)

如果您真的想要UserControl,使用Button没有任何好处。 UserControl只是提供了一种创建控件的简单方法。来自MSDN上的UserControl Class页:

  

如果确实需要创建新控件,最简单的方法是创建一个派生自UserControl的类。在此之前,请考虑您的控件不支持模板,因此不支持复杂的自定义。但是,如果您希望通过向其添加现有元素来构建控件,那么从UserControl派生是一个合适的模型,类似于您构建应用程序的方式,以及您是否需要支持复杂的自定义。 (如果要在控件中使用模板,请改为从Control派生。)

正如MSDN的评论所指出的那样,使用UserControl代替Button作为基类将意味着您的控件无法模板化,而使用Button作为基类时,你仍然可以提供一个新的ControlTemplate

您应该始终使用最符合您需求的控件作为基类。 UserControl只是为我们提供了一种简单的方法,可以将已有控件的集合添加到UI中。如果那不是您想要做的,那就不要使用它。