.net - 如何在WPF中暂停和恢复布局?

标签 .net wpf

如何在WPF中暂停和恢复布局?
听说没有必要。但这是非常必要的!

我处理许多更改位置,如果将它们一一呈现,则会产生延迟效果。

这是一些代码:
CompositionTarget.Rendering += new EventHandler(Draw); void Draw(object sender, EventArgs e) { //Clean screen for (int i = mainCanvas.Children.Count - 1; i > -1; i--) { if (mainCanvas.Children[i] is PlayerUserControl || mainCanvas.Children[i] is Image) { mainCanvas.Children.Remove(mainCanvas.Children[i]); } } //DRAW FLOOR AROUND FloorService.FloorEntity[] floorsAround = floorService.selectFloorsAround(Player.id); for... { Image image = new Image(); image.Source = new BitmapImage(new Uri("/" + floorsAround[i].ImageSource, UriKind.Relative)); mainCanvas.Children.Add(image); } //DRAW PLAYERS AROUND //Its similar as draw floors around. ... }

最佳答案

WPF是保留的合成引擎。这意味着您不必自己挂接Rendering事件来进行渲染,而是使用将要放入树中的节点来组成图像。有关WPF体系结构的详细信息,请参见此处:WPF Architecture。我可以向您保证,如果您对本文档以及Rick Sladkey发送的布局系统链接完全了解,那么您还应该理解,如果要继续使用WPF,为什么还要更改代码。

如果您正确使用WPF(例如,使用依赖项属性,例如重写Measure&Arrange方法),您将看到它是一个非常强大的引擎,能够在图形树中显示数千个节点。我建议另一个有用的读物​​:ZoomableApplication2: A Million Items

关于.net - 如何在WPF中暂停和恢复布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556190/

相关文章:

wpf - 在 XAML 中呈现分隔列表?

c# - 来自外部程序集的 ApiControllers 的属性路由

c# - 当内部调用不是自然异步时,如何创建自然异步方法?

.net - 如何让我的简单 .NET LRU 缓存更快?

wpf - 如何在WPF应用程序中全局更改动画的速度?

C#:在搜索/计算期间禁用按钮

.net - 如何检查一个对象是否属于某种类型

.net - 使用 MSBuild 构建混合 DotNet Core/.NET Framework

c# - 当对象用于显示时,组合框值在选择后消失

wpf - 如何将 TreeView 图标更改为文件夹图标?