【问题标题】:Performance Considerations - VisualState vs Toggling Visibility using AttachedProperty性能注意事项 - VisualState 与使用 AttachedProperty 切换可见性
【发布时间】:2013-11-10 01:21:16
【问题描述】:
目前,我们在控件的 ControlTemplate 中有一个可视元素,其 Visibility 绑定到附加属性,并在满足特定条件时在控件上设置。当附加属性为 true 时,我们使元素可见(边框)并在值为 false 时折叠它。
另一种方法是通过向控件添加一些自定义状态来更改控件的状态。
考虑加载大量数据的网格(例如,Telerik 的 RadGridView 等 - 在 GridViewCell 上设置附加属性以使其 ControlTemplate 元素之一可见/单元格状态更改)等场景,方法表现更好?
【问题讨论】:
标签:
c#
wpf
attached-properties
visualstatemanager
radgridview
【解决方案1】:
附加属性的方式肯定没问题。如果您想创建自定义视觉状态,您很可能最终会做同样的事情 - 不是创建附加属性并附加到 GridViewCell,而是扩展控件以在您设置的位置具有相同的属性和新的视觉状态Border 到 Collapsed 的 Visibility,当属性条件满足时触发状态。
控件RadGridView内置了虚拟化,我觉得你完全不用担心性能问题。但我想创建附加属性可能会更简单一些,而扩展控件可能会更灵活一些——比如说,如果你想在新状态下做一些繁重的动画,你可以在 Blend 中轻松完成。