我是否需要用户控件上所有基本属性的依赖项属性?

本文关键字:属性 依赖 是否 用户 控件 | 更新日期: 2023-09-27 18:06:30

我目前正在编写我的第一个用户控件,它将由一个标签和一个文本框组成,如下所示:

<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中编写第一个控件时,它是非常有用的。