[样式,模板或用户控件

问题描述 投票:0回答:1

我已经在WPF中编写非常基本的UI已有一年多了。我现在正在开发第一个大型应用程序,因此将更深入地研究XAML中的代码重用。我无法确定标题中提到的三个元素中的每一个何时合适的用例。

何时使用:-款式-范本-用户控件

我不断发现自己试图更改看似简单的内容,例如,选项卡控件中标题标签的文本颜色。但是,在我假设是一个简单的属性设置的任务中,很快,我很快在资源字典中得到了25行代码,因为我完全重写了Tab控件模板以完成此任务。

[当我尝试为可重复使用的节标题创建样式文本块时,发现文本块没有边框。那我该怎么办?重写模板?每次制作标题时都对边框进行硬编码?创建自定义用户控件?

具体来说,在设计用户界面的元素时,为什么以及何时选择每个元素?以及您如何知道哪一个将为您提供所需的结果?

wpf xaml resourcedictionary
1个回答
0
投票

[首先,每个theme和每个基本类型(例如Brush,Font,FontSize等)都有一个资源字典。拥有具有不同样式的不同主题非常昂贵,我宁愿避免使用它。

样式旨在使您的xaml保持简单,可读性以及UI外观均一。因此,资源字典中有许多可重用的样式。如有必要,请按类型将它们拆分为不同的文件。如果样式不应该可重用,则将其精确地放在所属位置,例如在使用它的元素的资源标签中。

总是尝试使用样式来完成,最终您将达到控件的局限性,并且将被迫更改模板,因此,为了使此转换更轻松,最好不要对任何可重用的内容进行硬编码。

您可以从样式中覆盖控件模板,这通常是一个好习惯。例如,您可以为文本块编写样式,以更改模板并使其具有边框。在这种情况下,样式和模板位于同一位置。如果这些模板可重复使用,则将其过时,命名并重新使用。否则,将其保留在样式的ControlTemplate标记内。

在粗略地从头开始编写模板之前,请仔细检查component parts,以查看是否已利用此功能。

用户控件的用途有些不同。首先,我要清楚地说明control用户控件自定义控件是三件事。

  • 控件是从另一个控件派生的,并具有一些其他功能。例如numeric up down control基本上是一个带有两个额外按钮的“文本框”,其行为与文本框非常相似。
  • 用户控件是您可以从设计器中操纵的东西,实际上可以查看它的各个部分并与其交互,它通常很复杂,例如带有添加,编辑,删除按钮,列表和文本框的视图。您不能说是哪一个,因为它都不是其中的一部分。
  • 自定义控件是一种无外观控件,它仅提供其全新的可用性,例如时间选择器。它的外观分别需要一个模板,并且该模板将使用某些样式。 Order of preference is mentioned here

从技术上讲,您可以为几乎所有内容编写控件或控件模板。但是不同之处在于,模板旨在改变现有控件的外观,而控件旨在使您能够创建不存在的控件。

因此带有边框的文本块仍然是文本块,带有按钮的文本块用户可以与之交互,这只是一个按钮。但是带有用户可以交互按钮的文本框是一个新控件。

我可以说,如果您可以预期将来控件会发生多大的变化,那么您可以轻松地决定它是否始终是同一件事,但外观会得到增强,或者它会是具有新功能的新事物? WPF原始控件无法提供。如果不确定始终可以从样式开始,请覆盖模板。当它需要新功能时,您需要创建一个从现有控件派生的新控件,或者将整个控件重写为自定义控件。但切勿使用用户控件进行操作

© www.soinside.com 2019 - 2024. All rights reserved.