问题标签 [adornerlayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 装饰器变换与像素宽度
我目前正在研究一个稍微复杂的装饰器。当用户缩放时,这将仅在一个维度上进行转换。不幸的是,这对它周围漂亮的 1px 细线边框造成了严重破坏(我希望它保持漂亮的细线边框 - 即使在变换维度上也是如此)。
这是我对问题的诊断:
假设我对装饰的 UIElement 应用缩放变换。WPF 然后调用以下
- 装饰 UIElement 的 ArrangeCore()
- Adorner 的 MeasureOverride()
- 装饰者的 ArrangeOverride()
- Adorner 的 OnRender()
- Adorner 的 GetDesiredTransform(...)
最后两个对我来说似乎彻底倒退了。如果我没看错,这意味着,当我覆盖 GetDesiredTransform 时,为时已晚。是的,我确实可以缩放/平移/倾斜我的装饰器,但问题是:如果我想按照上述方式进行操作,即只缩放一个维度并在装饰器上保留 1px 的细线边框,该怎么办?好吧,我不能,可以吗?
如果我要使用装饰器,在我看来,我必须将它们分成单独的装饰器 - 那些会缩放的和不会缩放的。似乎工作量很大。我在这里的通话顺序方面是否遗漏了什么?我想我可以一直触发 OnRender,沿着视觉树一直到树叶,但这似乎是一种巨大的矫枉过正。
wpf - 父内容控件与其子控件之间是否始终存在装饰层?
只是想澄清一个观察。(我似乎无法从谷歌找到直接的答案)。我正在使用装饰器进行一些图像编辑。我的图像既在 an 中ItemsControl
,也作为InkCanvas
.
当GetAdornerLayer()
用于 中的元素时ItemsControl
,我会自动在ItemsTemplate
. 但是,如果我用 进一步向上查看视觉树VisualTreeHelper
,我会发现另一个AdornerLayer
高于所有项目的ItemsControl
. ( theItemsControl
本身就是 a 的孩子Grid
)。另一方面,当访问 的AdornerLayer
子级时,我得到一个位于自身及其子InkCanvas
级之间的装饰层。InkCanvas
因此,在这两种情况下,WPF 似乎总是在内容控件及其子控件之间放置一个装饰层。
真的是这样吗?
TIA。
wpf - 如何使数据绑定在 AdornerLayer 中的控件中工作?
我正在处理一个项目,我正在渲染添加到 AdornerLayer 的控件 - 但是似乎数据绑定不起作用。
在向装饰器添加控件时,是否还需要考虑其他事项?
出于某种原因,DataTriggers 也没有任何效果,就好像我应该调用某些东西来正确连接它一样。