当我想要创建一个响应式UI时,我想要一些提示。
我知道如何使用:
Dispatcher
Task
BackgroundWorker
Threads我正在寻找更多的高级技巧,比如绑定技巧……当我的UI上有需要更新的50+控件时。
PriorityBinding
Populating ComboBoxes
Populating ListBoxes, ListViews在后台处理数据时...当涉及到长时间运行的过程时,可能是最佳实践。
我还能做些什么来使我的UI 100%响应。
发布于 2011-11-01 17:47:25
与基于animation
CollectionView.
AllowTransparency=true,Background=Transparent,TileMode
RenderOptions.BitmpaScalingMode as LowQuality并启用缓存。启用PresentationFontCache Dynamicresources
Staticresources。在属性改变的回调中也要避免繁重的操作。
Color属性执行x:Name / Namescoping / Binding将它们设置为始终可冻结。
Brush设置为视觉背景,然后指定Brush.Opacity,则Visual.Opacity.
IsExpanded=False的任何位置使用Binding.IsAsync和PriorityBinding。
CompositionTarget.Rendering会在每个渲染周期触发,因此应仅在需要时使用。在任何opportunity.
DataGrid Extedned based Shader effects和新的像素着色器API(如模糊、阴影。)一起使用时,从的项源中实际搜索每个组合框和模板列泄漏的值
还有更多..。
发布于 2011-11-02 15:15:30
我总是发现延迟加载非常有助于防止一次加载大量数据,这是处理大量数据时大部分启动时间的地方。将您的记录绑定到virtualized项控件,以最小化内存占用(显然,WPF是您判断内存中所需内容的标准)。
但老实说:马丁是相当的right...50+数据绑定控件,...man,这是该死的;-)
而你对100%响应性的追求,我想,需要进一步的解释。据我所知,应用程序可以响应,也可以不响应(接受用户输入/产生输出,而不是什么都不做)。你的目标是最好的性能吗?或者这是您面临的行锁场景(允许用户在对某些记录执行长任务时编辑其他记录)?
我认为AngelWPF提到的一些内容可以在关于优先级绑定的this neat article中找到。
发布于 2011-11-01 17:28:50
单个UI上的50+控件听起来像是由程序员设计的,优化代码可能会在一段时间内抵消真正的问题。加快速度的最好办法是将你的功能分离到不同的屏幕上,或者将较少使用的信息隐藏在菜单后面。
https://stackoverflow.com/questions/7964445
复制相似问题