我目前正在编写我的第一个用户控件,该控件将在堆栈面板中包含标签和文本框,如下所示:
<Grid>
<StackPanel Orientation="Horizontal" DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Label Content="{Binding Label}" Width="60"></Label>
<TextBox Text="{Binding TextBoxContent}" Width="60"/>
</StackPanel>
</Grid>
在设置页面中,这将是最有用的,因为它将被重复用于多个不同的设置。使用这些设置中的每一个,我将要(至少)设置宽度,高度,验证规则和错误模板属性。至于文本本身,我已经为标签和文本框创建了一个依赖项属性(如您在上面的代码段中所见)。
我的问题是:我是否需要为我刚才提到的我在实际使用用户控件时要设置的所有属性创建一个依赖项属性?这似乎是多余的工作(因为它们已经存在于文本框中,所以基本上它们只是将我的用户控件的属性重定向到同名的文本框的属性)?如果我想在文本框中使用更多属性(例如,AcceptsReturn等),则需要做更多的工作。
如果您决定从中派生TextBox
而不是UserControl
-可以将多余的工作保存下来-只需将控件视为“带标签的文本框”,而您所需要做的就是从中派生TextBox
并添加所需的依赖项属性以适应标签。对于更复杂的用户控件,当然不是这种情况,但是在您的情况下似乎可以。
但是,这样做的缺点是您必须使用默认的控件模板TextBox
并使用它来添加标签,这可能会有些棘手。
无论哪种方式,我都建议您查看MSDN上的“控件创作概述”页面,这在使用WPF编写第一个控件时非常有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句