用户控件
WPF 用户控件继承UserControl类,其行为与WPF窗口非常相似:有一个XAML文件和一个代码后置文件。
在XAML文件中,您可以添加现有的WPF控件以创建所需的外观,然后将其与代码后置文件中的代码组合,以实现所需的功能。 然后,WPF将允许您在应用程序的一个或多个位置嵌入此功能集,从而允许您轻松地在应用程序中分组和重用功能。
自定义控件
自定义控件比用户控件更低级别。 创建自定义控件时,将根据需要的深度继承现有类。 在许多情况下,您可以继承其他WPF控件的Control类(例如TextBox),但如果您需要更深入,则可以继承FrameworkElement甚至UIElement。 你越深入,你得到的控制就越多,继承的功能就越少。
自定义控件的外观通常通过主题文件中的样式进行控制,而用户控件的外观将遵循应用程序其余部分的外观。 这也突出了用户控件和自定义控件之间的主要区别之一:自定义控件可以设置样式/模板,而用户控件则不能。
创建用户控件
我们将创建一个有用的用户控件,能够将TextBox中的文本数量限制为特定数量的字符,同时向用户显示已使用的字符数以及可以使用的字符数。 这很简单,并且在许多Web应用程序(如Twitter)中使用。 将这个功能添加到常规窗口很容易,但由于它可能在应用程序的多个位置使用,因此将它包装在一个易于重用的UserControl中是有意义的。
<UserControl x:Class="用户控件.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:用户控件"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition