WPF矩形与边框:哪种性能更好?

时间:2013-02-06 21:06:47

标签: wpf wpf-controls

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

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

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

2)装饰器(如Border)如何相对于其他控件执行?

3)具体是关于Border和Rectangle,哪个表现更好?

1 个答案:

答案 0 :(得分:1)

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

或者,如果它是一些已经组合的东西,比如TextBox,我在它周围添加一些颜色 - 通常是边框。

通过记住这一区别,它可以帮助您更好地理解XAML树,并为您提供以后更容易维护的代码。