什么时候应该在WPF中提取UserControl

时间:2009-12-22 13:01:47

标签: wpf user-controls

在我们的工作中,我们遇到了一个争议,一些人想要创建用户控件,结合常用的控件,如标签和文本框,或标签和图像控件。就是这样:

<StackPanel Orientation="Horizontal">
    <Image Source="/Someimage/Somewhere.gif"/>
    <Label>Some text, hyperlink, or other content</Label>
</StackPanel>

并像这样使用

<ImageLabel
    HeaderImageSource="/Someimage/Somewhere.gif"
>
    Some text, hyperlink, or other content
</ImageLabel>

问题是他们是否提供足够的封装和抽象来分配用户控件?

2 个答案:

答案 0 :(得分:3)

是的,在我看来,这足以创建一个单独的用户控件 - 如果它们在您的上下文中形成逻辑组件。在我正在开发的项目中,如果我们将要重用的组件分组,我们会创建用户控件。

主要好处是可以控制组件的结构和样式。考虑您想要在某处进行更改的情况。例如。在图像周围添加边框或在标签上添加一些样式。您不希望浏览代码以查找重复的组件组的所有出现。相反 - 您只想更新这一个地方 - 即在您已分离的自定义组件中。

另一个优点是,如果要将组件绑定到同一对象。然后,您可以将ImageLabel绑定到对象,并且您的组件可以以一种漂亮而干净的方式直接绑定到此对象中的属性。

注意:我假设您确实希望重用此组件,并希望它在整个应用程序中的结构和样式相同。我永远不会创建一个简单的用户控件只使用一次。

答案 1 :(得分:2)

为三个控件创建UserControl似乎有点过分;我会考虑它是否节省了我的时间和精力,而不是封装/抽象。