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

Jas*_*ank 8 wpf wpf-controls

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

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

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

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

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

Jam*_*rst 2

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

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

通过牢记这种区别,它可以帮助您的 XAML 树对您来说更有意义,并为您提供以后更易于维护的代码。