问题标签 [adorner]

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 投票
1 回答
2041 浏览

wpf - 保存 WPF 装饰器

我对 WPF 比较陌生,我对 Adorners 有疑问。

我有一个包含图像的inkcanvas,我可以使用用户添加的笔画保存图像。我遇到的问题是我有一个要求,允许用户在图像上添加文本,并在不损坏图像的情况下打印/保存文本。

我使用装饰器将文本放在墨水画布上,它在屏幕上看起来不错,但我不知道保存文本或打印带有文本的图像。

任何帮助,将不胜感激

0 投票
2 回答
8450 浏览

.net - 如何在 WPF 中的控件顶部显示进度条

在 WPF UserControl 中,我必须调用 WebService。我在一个单独的线程上进行此调用,但我想通知用户该调用可能需要一些时间。

WebMethod 向我返回一个对象集合,我将它绑定到我的 UC 中的 ListBox。到目前为止,一切都很好……这部分工作得很好。但是,我想在通话期间显示进度条(或任何类型的动画......)。此动画将位于 ListBox 控件的顶部并居中。

我尝试了 Adorner,它部分有效。但是,我必须在受保护的覆盖 void OnRender(DrawingContext drawingContext) 中绘制所有控件...我只想添加一个控件几秒钟...

有人知道我如何实现这一目标吗?

谢谢!

0 投票
1 回答
799 浏览

wpf - 动态添加控件的初始验证

WPF 验证系统执行对象的初始验证(我的意思是 - 当数据绑定项更改时验证所有字段,结果显示在 ui 上)。但是当我动态添加控件时,它不会像这样工作。在这种情况下会发生初始验证,但结果不会显示在 ui 上。只有在数据绑定对象的某些属性发生更改后,一切才开始正常工作。这是一个粗略的样本。

假设我们有 MyObject 类

还有一些用户控件,比如 MyUserControl,它允许编辑 MyObject 对象。它可能看起来像这样:

现在,当将此控件添加到 xaml 中的主窗口(或在构造函数或窗口加载事件中的代码中)时,比将 MyCustomControl.DataContext 设置为 MyObject 类的新实例时,名称字段会立即验证并发出错误通知使用验证错误模板显示。但是当动态添加 MyCustomControl 时(例如,单击按钮之后),会发生初始验证,但 ui 不显示结果(没有红色边框等)

假设应用程序窗口由一个停靠面板(dockPanel)和一个按钮组成:

为什么?

0 投票
2 回答
4346 浏览

c# - 装饰器内的动画(调用 OnRender)

我在 .NET 3.5 中使用装饰器,并且可以通过覆盖 OnRender 进行绘制,但我需要能够重绘装饰器以更改其外观。

本质上,我正在寻找一种清除绘图上下文并再次调用 OnRender 的方法。最好的方法是什么,或者有更好的方法吗?

0 投票
1 回答
1347 浏览

wpf - 不,装饰器不会在 WPF 中自动获取其 AdornedElement 的 DataContext

原始问题:AdornerWPF 中是否自动继承其“AdornedElement”的“DataContext”?

0 投票
1 回答
957 浏览

c# - 深度嵌套的视觉树中的拖放装饰器

我们有一个 WPF 应用程序,它在画布上具有自定义窗口,而该画布又包含自定义控件(包含自定义窗口的主画布再次是自定义控件显示内容)。所以基本上视觉树看起来像这样(没有隐含的边框和其他东西):

现在我们需要从这些自定义控件相互拖放(通常是从可移动窗口到背景窗口)。要显示拖放装饰器,需要一个装饰元素和一个装饰层。通常示例使用它们的网格或项目控件,并且还从同一元素获取装饰层。

在这里做同样的事情是行不通的,因为 ScrollPreseneter/CustomWindows 剪辑了它们的内容,这会阻止你拖出窗口。现在,我们沿着可视化树向上走,直到找到根画布并将其用作装饰元素,但这似乎有点脏(而且正如我们所经历的那样,它不是很健壮)。

有关于此的强大解决方案的任何建议?

0 投票
1 回答
747 浏览

wpf - HwndSource 不显示 Adorner 层

当我在 HwndSource 中托管使用​​装饰器(文本框的错误边框)的 WPF 控件时,不会显示装饰器。装饰层似乎不存在。为什么会这样,我能做些什么呢?这是一个已知的错误?

0 投票
2 回答
2465 浏览

wpf - WPF 装饰器转换

我正在构建一个控件,用户可以在其中“绘制”覆盖内容的可调整大小的矩形。为了调整这些矩形的大小,我在它们上面使用了一个包含 4 个拇指的 Adorner 来更改矩形的大小。

问题是,该控件是“可缩放的”,这意味着 ScaleTransform 将根据缩放因子应用于整个控件。Adorner 中的 Thumbs 也受此 ScaleTransform 影响。

但我需要它们保持它们的大小,与缩放因子无关。我尝试将装饰器放在另一个未转换控件的层中,而不是矩形层,但这不起作用。我怎样才能做到这一点?

谢谢,安德烈

0 投票
3 回答
5301 浏览

wpf - WPF 装饰器剪辑

我有ItemsControl一个ScrollViewer. 中的项目ItemsControl扩展为DataTemplate基本上由 组成的Adorner

现在的问题是,在滚动时, 的 Visual ChildrenAdornerScrollViewer. 假设我从水平偏移量 0 滚动到 100,Adorner向左移动的 Visual Children 并且在 旁边可见ScrollViewer,尽管它们应该被隐藏。设置ClipToBounds或不起作用ItemsControlScrollViewer

我知道,它们Adorner在所有元素的 z 顺序之上呈现,但在ScrollViewer. 方式装饰Element的行为与预期的一样,并且通过ScrollViewer.

是否有任何简单的方法可以“剪辑” Adorners,以便它们仅在可见滚动区域中可见?

谢谢,安德烈

0 投票
3 回答
1986 浏览

wpf - WPF 扩展器在缩小时仍显示验证错误装饰器

我有一种样式TextBox来显示验证错误消息,如下所示:

生活TextBox在一个Expander。当我打开扩展器时,TextBox允许输入,但如果输入是NullorEmpty或包含特殊字符,则验证将失败。

我的问题是,当我触发验证错误时,TextBox指示灯会亮起红色并显示带有消息的图标作为工具提示。到目前为止一切都很好。但是当我在Expander没有通过验证的情况下关闭时,带有工具提示的红色轮廓和图标仍然存在!即使Expander缩小了!只是漂浮在那里......这不是好的行为。

关于如何让验证内容与所有其他控件一起隐藏的任何想法Expander?此外,用于验证的 Style 是在 UserControl 的资源中声明的,而不是在其Expander本身中。