问题标签 [frameworkelement]

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 回答
1003 浏览

wpf - 如何在卸载之前获取 FrameworkElement 属性

需要实现 UI 设置系统 - 将 UI 元素的某些属性(可以由用户在运行时修改)从/到持久存储中加载/保存。例如:

  • DevExpress 网格控件 - 列宽、可见性、摘要区域等(此控件具有一组方法对,如 RestoreLayoutFrom/SaveLayoutTo,但 SaveLayoutToStream(Xml) 在网格中不起作用。未加载的处理程序 - 当网格与 PresentationSource 断开连接时)
  • 网格行/列,用户可以通过 GridSplitter 调整其宽度/高度
  • 相当大的弹出控件

在控件加载/初始化/等之后从设置存储中设置控件属性很容易,但是如何捕捉控件卸载之前的时刻(当它们仍然保留在可视树中时)以检索它们的设置以进行保存?

简短的介绍

我打算创建单例 - UISettingsManager,它里面有一个字典,里面有成对的[元素 Uid,元素设置数据]。在可视化容器(Window、UserControl)中,这个管理器可以这样使用:

myGridControl 和 myPopup 具有唯一的 Uid(在应用程序范围内),因此 UISettingsManager 可以从内部字典中检索它们的设置并将其应用于控件;当然 UISettingsManager 知道如何使用一些不同类型的控件。

但是,当存储控件设置的正确时机时,哪个容器是 Window 或 UserControl?

0 投票
1 回答
126 浏览

wpf - 将 ScrollViewer 附加到 FrameworkElement?

是否可以使用 anAdorner或其他方式动态获取 aUIElement/FrameworkElement并将其放置在动态创建的 中ScrollViwer?我知道明显的问题是您必须首先将元素与其父元素分离,但我正在寻找一种优雅的方式来做到这一点。

0 投票
1 回答
167 浏览

silverlight - FrameworkElement 是否渲染?

有没有办法知道肯定FrameworkElement是渲染到屏幕上的。例如。我有两个矩形,一个与另一个重叠。但我不确定一个与另一个重叠的“多少”。

所以我需要知道用户会看到两个矩形,还是只会看到一个,或者会完全看到一个和部分?

0 投票
4 回答
11037 浏览

wpf - FrameworkElement 的 DataContext 属性不会沿元素树继承

你好 WPF 专业人士至少我希望你们中的一些人读到这个!

DataContext 是 FrameworkElement(所有 WPF 控件的基类)上的属性,并作为 DependencyProperty 实现。这意味着逻辑树中的所有后代元素共享相同的 DataContext。

所以 ContentControl 应该用它的后代元素来做吗?

我有一个情况并非如此,我想知道这种不当行为的原因是什么?!

如果您对它有更多了解,请阅读问题开始的这个线程(不想在这里复制所有内容)......:

WPF:找不到触发目标“cc”。目标必须出现在任何 Setter、Triggers 之前

简而言之:我在 ContentControl 中的 DataTemplates 确实有一个死的 DataContext 这意味着没有什么可以绑定到它,实际上是不可能的......

ContentControl 下方的每个元素都没有在 DataContext 属性中设置任何内容???

0 投票
1 回答
3063 浏览

wpf - WPF - 将 ContentControl 添加到自定义画布

我有一个从 Canvas 继承的自定义 DrawingCanvas。当我使用以下代码将 ContentControl 添加到 DrawingCanvas 时,没有显示任何内容。

GraphicsRectangle 是一个 DrawingVisual,上面的构造函数将左上角 (0,0) 点和长度为 200 的 Rect 绘制到 GraphicsRectangle 的绘图上下文中。DrawingContainer 是一个 FrameworkElement,它有一个子元素,它是上面的矩形,带有构造函数。DrawingContainer 实现 GetVisualChild 和 VisualChildrenCount 覆盖方法。最后,将 ContentControl 的 Content 属性设置为 DrawingContainer,以便能够显示 DrawingVisual 的内容。

当我将创建的 ContentControl 添加到常规 Canvas 时,控件会正确显示。我猜原因是 DrawingCanvas 没有实现 ArrangeOverride 方法。它只实现 MeasureOverride 方法。此外,DrawingContainer 不实现 Measure 和 Arrange 覆盖方法。有任何想法吗?

0 投票
1 回答
1490 浏览

c# - C# WPF 在 Stackpanel 中以编程方式创建的 DataTemplate Dockpanel 没有效果

我正在尝试为列表框动态创建数据模板。这是一个自定义用户控件。此 UserControl 有一个DependencyProperty,它接受任何类型的IEnumerable<>

这工作正常......但输出总是

  • 适当的价值
  • 适当的价值

如果对象包含 2 个属性。但我希望这些属性并排排列。像:

对象 1:

  • 财产/价值财产/价值

对象 2:

  • 财产/价值财产/价值

那么我哪里错了?我首先制作一个 Stackpanel,然后在 Stackpanel 中制作包含标签的 Dockpanels。

这是一个小预览它现在的样子。在此处输入图像描述

所以这是我创建数据模板的代码:

0 投票
1 回答
1321 浏览

c# - WPF FrameworkElement 鼠标点击问题

在 WPF 应用程序中,我在 Grid 中有一堆 CustomControls。为了处理鼠标单击它们,我使用了MouseLeftButtonDownGrid 的事件,并在事件处理程序中检查单击了哪个 CustomControl:

当我将所有 CustomControls 放在 UserControl 中,然后放在 Grid 中时,问题就出现了。在这种情况下,方法不起作用。
我检查了每种情况下的点击源类型,e.Source.GetType().ToString();并得到以下结果:

当没有问题时(如果我将CustomControls放在没有UserControl的Grid中)

当我将 CustomControls 放入 UserControl 然后放入 Grid

当我将 CustomControls 放入 UserControl 然后放入 Grid 并通过XamlReader.Load

所以,我的问题是:
如何使 CustomControls 像e.Source在 UserControl 中一样可见?

0 投票
5 回答
13877 浏览

wpf - 在 WPF 中,如何为 Template 中设计的 FrameworkElement 添加 EventHandler?

我为外部资源字典中的项目DataTemplate定义了以下内容:ListBox

我需要为 Slider 的ValueChanged事件提供事件处理方法。我不知道应该在哪里编写该代码,因为在模板中为控件指定事件处理程序是不切实际的。

我一直在搜索解决方案,发现我应该在OnApplyTemplate()方法的覆盖中添加事件处理程序。我的猜测是它应该看起来像这样或类似的东西:

但是我应该在哪里写这个方法?OnApplyTemplate 覆盖是否仅适用于 ControlTemplates 还是我的方案也包括在内?我应该提供 ControlTemplate 而不是 DataTemplate 吗?我提供的方法的主体是否正确?

请帮忙。谢谢。

0 投票
1 回答
4266 浏览

c# - WPF 自定义 FrameworkElement / IScrollInfo

我有一个带有基本自定义FrameworkElement实现的简单测试应用程序(下面的 TestElement)。TestElement 创建了几个绘图视觉效果,并在构造函数中绘制了一些宽度为 600 的东西。它还实现了 IScrollinfo 的必要位;包含该元素的窗口有一个滚动查看器,最大尺寸为 300x300。滚动条出现但不滚动 TestElement 的内容。

谁能建议我正在尝试做的事情是否可行,如果可以,我做错了什么。我可以在 SetHorizo​​ntalOffset 中重新渲染绘图视觉效果,但出于性能原因不想这样做,因为我已经绘制了我需要的所有内容。

我希望这个问题有意义 - 如果没有,请告诉我,我可以澄清一下。

非常感谢 - 卡尔

xml:

0 投票
2 回答
6944 浏览

wpf - FrameworkElement.Name 问题

我正在尝试在构造函数中设置 Page 的 Name 属性:

但是,我经常收到以下错误消息。

哪里x似乎几乎是任何东西,深入研究异常细节似乎并没有提供任何有用的信息(例如 InnerException 为空。)

有谁知道这里发生了什么?