8

有时,Border控件或Rectangle控件都可以满足我的需求。一个例子是,当我正在实现一个 ControlTemplate 并且我已经在应用分层技术(即在网格中堆叠控件)时,我不需要将不同的 RadiusX 或 RadiusY 应用于角落。

然而,在设计这样的 ControlTemplates 时,有时我最终会使用几个这样的边框或矩形层。因此,我意识到我可能应该认识到哪个控件对应用程序的性能影响最小。我看到它们的继承层次结构在 FrameworkElement 之后出现了分歧。而且我还注意到 Border 是一个装饰器控件(我使用过装饰器,但我不确定它们相对于其他控件的性能如何)。有人可以阐明

1)我们如何能够基于特定的继承层次对控件的性能影响得出一些一般性结论?

2) 装饰器,例如 Border,相对于其他控件的表现如何?

3)特别是关于边框和矩形,哪个表现更好?

4

1 回答 1

2

根据我的经验,WPF 边框有点轻量级,但更重要的是 - 它们代表了一种不同的需求,尽管它们通常在屏幕上呈现相同的效果。如果我正在撰写包含矩形作为其一部分的东西,那么矩形通常是合适的。如果我想在屏幕上强调某些东西,或者表明一个对象有一些不同的状态——那么我将使用边框。我经常将该边框的颜色、粗细或可见性绑定到模型的 state 属性(或适用于您的情况的任何内容),但本质区别在于边框不是对象的一部分。这是一种使该对象脱颖而出或可见的方法。

或者,如果它是一些已经组成的东西,比如一个文本框,我在它周围添加了一些颜色——这通常是一个边框。

通过牢记这一区别,它可以帮助您的 XAML 树更适合您,并为您提供以后更易于维护的代码。

于 2014-04-14T02:07:21.723 回答