问题标签 [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.

0 投票
3 回答
1123 浏览

c# - 使用 .net 装饰器同时调整多个不同形状的大小

我正在 WPF 中开发一个桌面应用程序,其中包含不同类型的形状(如圆、半径圆、直径圆)。现在我需要根据需要调整形状的大小,所以我使用.Net adorner了它提供了拖动和调整形状大小的灵活性。确切的问题是我想同时调整两个元素的大小(即*当我调整圆的大小时,半径 Line 也应该根据半径起点和终点调整大小)。

注意我没有尝试任何东西(我还没有进行任何开发,所以我没有编码)。

更新了您的代码的试用版。这是一个直径圆所以当我拖动它时它只会拖动椭圆

在此处输入图像描述

0 投票
1 回答
38 浏览

c# - 装饰器变换与像素宽度

我目前正在研究一个稍微复杂的装饰器。当用户缩放时,这将仅在一个维度上进行转换。不幸的是,这对它周围漂亮的 1px 细线边框造成了严重破坏(我希望它保持漂亮的细线边框 - 即使在变换维度上也是如此)。

这是我对问题的诊断:

假设我对装饰的 UIElement 应用缩放变换。WPF 然后调用以下

  1. 装饰 UIElement 的 ArrangeCore()
  2. Adorner 的 MeasureOverride()
  3. 装饰者的 ArrangeOverride()
  4. Adorner 的 OnRender()
  5. Adorner 的 GetDesiredTransform(...)

最后两个对我来说似乎彻底倒退了。如果我没看错,这意味着,当我覆盖 GetDesiredTransform 时,为时已晚。是的,我确实可以缩放/平移/倾斜我的装饰器,但问题是:如果我想按照上述方式进行操作,即只缩放一个维度并在装饰器上保留 1px 的细线边框,该怎么办?好吧,我不能,可以吗?

如果我要使用装饰器,在我看来,我必须将它们分成单独的装饰器 - 那些会缩放的和不会缩放的。似乎工作量很大。我在这里的通话顺序方面是否遗漏了什么?我想我可以一直触发 OnRender,沿着视觉树一直到树叶,但这似乎是一种巨大的矫枉过正。

0 投票
1 回答
411 浏览

wpf - 父内容控件与其子控件之间是否始终存在装饰层?

只是想澄清一个观察。(我似乎无法从谷歌找到直接的答案)。我正在使用装饰器进行一些图像编辑。我的图像既在 an 中ItemsControl,也作为InkCanvas.

GetAdornerLayer()用于 中的元素时ItemsControl,我会自动在ItemsTemplate. 但是,如果我用 进一步向上查看视觉树VisualTreeHelper,我会发现另一个AdornerLayer高于所有项目的ItemsControl. ( theItemsControl本身就是 a 的孩子Grid)。另一方面,当访问 的AdornerLayer子级时,我得到一个位于自身及其子InkCanvas级之间的装饰层。InkCanvas

因此,在这两种情况下,WPF 似乎总是在内容控件及其子控件之间放置一个装饰层。

真的是这样吗?

TIA。

0 投票
1 回答
139 浏览

wpf - 如何更改 AdornerLayer 以显示 ValidationError (WPF)

我创建了 RangeBase 的后代。在这个后代中,我创建了使用 TextBox 控件的模板。现在,当将无效值输入到 TextBox(包含在模板中)时,我需要验证值(继承的 RangeBase)。
这是我的问题:如果我想验证新的后代控件,只有 TextBox 装饰有验证错误(使用适当的 ControlTemplate) - TextBox 在 Text 属性的绑定中包含适当的验证(   )
但我需要它来装饰我的新控件,作为一个整体(不仅仅是文本框)在此处输入图像描述:。
有没有办法做到这一点?
也许需要更改 AdornerLayer 以便装饰器不会出现在 TextBox 上,而是出现在我的新元素上。

0 投票
1 回答
29 浏览

wpf - 如何使数据绑定在 AdornerLayer 中的控件中工作?

我正在处理一个项目,我正在渲染添加到 AdornerLayer 的控件 - 但是似乎数据绑定不起作用。

在向装饰器添加控件时,是否还需要考虑其他事项?

出于某种原因,DataTriggers 也没有任何效果,就好像我应该调用某些东西来正确连接它一样。