如何解决从 UWP/WinUI 中的 VisualCollection 中删除视觉对象的规范方法
我正在使用 VisualCollection
并试图找出如何删除特定索引处的 Visual
。 Microsoft 文档列出了一种可能的 API,即 VisualCollection.Remove()
。现在我的用例如下(假设 VisualCollection
的大小最初是 5):
- 通过父
SpriteVisual
的{{1}对子ContainerVisual
应用一些修改(Size()
/Offset()/
/Brush()
中的更改) },从下往上的方向。 (假设根据示例中的底部VisualCollection
中的 3 个) - 从
Visual
中移除剩余的(未更新的)SpriteVisual
(根据示例,剩余的 2 个VisualCollection
位于顶部) - 通过
InsertAtTop()
API 向父SpriteVisual
添加新的SpriteVisual
。
该文档提供了 ContainerVisual
API 以获取 VisualCollection.First()
的 IIterator
,但并未列出有关 VisualCollection
在修改迭代时收集。我假设与任何常规 C++ 容器相同的迭代器失效警告适用。
那么,我们如何按照上述方式修改 IIterator
?我有这个修改代码(我认为它与 VisualCollection
范式不太吻合)
for...in
现在如何删除剩余的 size_t idx = 0;
for (auto const& child : primaryVisual.Children()) { //primaryVisual is the parent ContainerVisual
if (idx < updateCount) { //updateCount is the number of Visuals to be updated
auto& spriteChild{ child.as<uxp_winrt::UI::Composition::SpriteVisual>() };
spriteChild.Size(uxp_winrt::Numerics::float2{width. height }); //width,height are the new sizes
spriteChild.Offset(uxp_winrt::Numerics::float3{ left,top,0 }); //left,top are the new offsets
idx++;
}
else {
break;
}
}
子 primaryVisual.Children().Count() - updateCount
?我正在为 SpriteVisual
使用 C++/WinRT
语言投影。我需要该解决方案可在 UWP 和 WinUI 中进行扩展。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。