当我想创建一个响应式用户界面时,我想要一些提示.
我知道如何使用:
Dispatcher
Task
BackgroundWorker
Threads
Run Code Online (Sandbox Code Playgroud)
我正在寻找更多高级技巧,比如绑定提示...当我的UI上有50多个控件需要更新时.
PriorityBinding
Populating ComboBoxes
Populating ListBoxes, ListViews
Run Code Online (Sandbox Code Playgroud)
在后台处理数据时...最佳实践可能涉及长时间运行的过程.
我还能做些什么来使我的UI 100%响应.
WPF*_*-it 16
通过使用AsQueryable()来动态过滤数据源而不是单线程和线程无关,在多个线程上使用PLinq或Linq
.CollectionView
现成的GIF动画
像帆布这样的非虚拟化面板的虚拟化
延迟滚动
Trigger.Exnter \退出动画的动作.
BeginStoryboard.HandoffBehavior = "撰写"
使用硬件超过软件加速.
避免WindowStyle=None,AllowTransparency=true,Background=Transparent,TileMode
配置RenderOptions.BitmpaScalingMode为LowQuality并启用缓存.启用PresentationFontCacheWindows服务.
使用Staticresources结束Dynamicresources
避免可继承的依赖属性.同时避免在属性更改回调中的繁重操作.
使用Freezable画笔.避免x:Name/ Namescoping/ Binding他们的Color属性他们一直是freezable.
设置边框的背景,如果它封装视觉而不是设置视觉背景.类似的是,如果你设置了Brush一个视觉的背景然后指定Brush.Opacity比Visual.Opacity.
值转换器必须具有最小化代码.使用Binding.IsAsync和PriorityBinding适用的地方.
使用Expanders与IsExpanded=False默认.
CompositionTarget.Rendering在每个渲染周期触发,因此只应在需要时使用.任何机会都要抓住它.
WPF DataGrid应该避免大量使用组合框列和可编辑的模板列,因为当使用高度可观察的集合时,combobx模板尝试加载选定的值并使用显示成员路径,通过从每个组合框的项目源实际搜索它和模板列泄漏.
使用WPF Extedned Tooklit基于Shader效果和New Pixel Shader API,如Blur,Shadow.
还有很多...