何时使用自定义用户控件

时间:2013-08-22 14:05:19

标签: wpf user-interface user-controls

我正在设计一个庞大的用户界面。我的雇主想要它的方式,至少有100个标签。现在,我一直认为在这种情况下,将UI分解为更小的自定义控件是理想的方法。但是,有人最近告诉我,自定义控件实际上只用于代码重用。对此实际建议的做法是什么?

修改

完成的表单如下所示:

enter image description here

现在,我正在使用WPF作为用户界面,我正在考虑将其分解为更小的位。

5 个答案:

答案 0 :(得分:2)

根据你的图片,我看到一些重复,每次重复都可以是一个自定义的UserControl

但这取决于可用性是否更容易编写自定义UserControl所以这样做但是如果它会降低代码的可读性并且还增加了额外的复杂性而不是这样做

这里有一个可以单独的UserControl的

的例子

绿色的可能是逻辑的有用封装 橙色的可能需要一些不市场的东西(对你的软件不够了解)
红色的可能是基于实习生使用(从视觉部分他们是重复所以应该自定义UserControl)

enter image description here

答案 1 :(得分:0)

由于您的用户界面是只读的,我建议使用grid

答案 2 :(得分:0)

你是WPF新手吗?要将视图分成多个位,WPF会为您提供CustomControls和UserControls。它们是两个非常相似的东西,但彼此完全不同。 CustomControls是Buttons,Labels,TextBoxes,DataGrids等。它们基本上是简单的独立控件。 UserControls是一组独立控件,用于实现一个目的,例如Button和ComboBox彼此相邻,因此用户可以在ComboBox中选择一些内容并通过单击Button来确认。

如果你想显示数据库中的数据,我建议你使用DataGrid,它会给你一个类似于行和列的表格,以及所有这些。如果您希望在DataGrid旁边放置几个按钮,用户可以单击这些按钮以插入新行或编辑某个单元格,那么我建议您使用UserControl包装所有这些按钮,您可以在其他需要显示的地方重复使用并从数据库中更改数据。

答案 3 :(得分:0)

您应该使用数据网格,并且可以自定义其模板,以便从渲染角度将单个单元格渲染为Textblock(Label的较轻版本)。 Textblock和Label之间的主要区别是非常小的事情,例如访问键和禁用状态行为。但是从WPF对象层次结构 - Textblocks要轻得多。但除了这一点 - 从雇主的角度来看 - 一旦你定制了网格模板并渲染它们(因为它们看起来像文本块/标签) - 你的雇主应该没有问题。

正如上面有人建议的那样 - 如果你想在逻辑上破坏UI的各个部分,因为它们可能来自db中的另一个表 - 那么用户控件是可行的方法(代码的可维护性)

如果您正在寻找更多技术细节或在技术上需要进一步帮助,请告诉我。

答案 4 :(得分:0)

制作和使用自定义控件或用户控件或定义一些数据模板没有任何问题,这些模板将根据数据的组织方式重复使用。

确保用户界面看起来非常混乱,某些网格应该与模板一起使用,例如存在类似数据的地方。我也有建议,并在开始之前首先考虑数据和功能,并让UI由它驱动。您肯定会重用控件/模板。如果您在模型和行为方面考虑,那么之后UI可以更容易地改变。

正确创建viewmodel,在命令中实现功能,使用绑定,之后UI将自然而然,重用控件,使用多个网格,使用多个区域,选项卡,窗口或任何使用户界面更加用户友好用户更舒服。