问题标签 [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.
wpf - 如何在卸载之前获取 FrameworkElement 属性
需要实现 UI 设置系统 - 将 UI 元素的某些属性(可以由用户在运行时修改)从/到持久存储中加载/保存。例如:
- DevExpress 网格控件 - 列宽、可见性、摘要区域等(此控件具有一组方法对,如 RestoreLayoutFrom/SaveLayoutTo,但 SaveLayoutToStream(Xml) 在网格中不起作用。未加载的处理程序 - 当网格与 PresentationSource 断开连接时)
- 网格行/列,用户可以通过 GridSplitter 调整其宽度/高度
- 相当大的弹出控件
在控件加载/初始化/等之后从设置存储中设置控件属性很容易,但是如何捕捉控件卸载之前的时刻(当它们仍然保留在可视树中时)以检索它们的设置以进行保存?
简短的介绍
我打算创建单例 - UISettingsManager,它里面有一个字典,里面有成对的[元素 Uid,元素设置数据]。在可视化容器(Window、UserControl)中,这个管理器可以这样使用:
myGridControl 和 myPopup 具有唯一的 Uid(在应用程序范围内),因此 UISettingsManager 可以从内部字典中检索它们的设置并将其应用于控件;当然 UISettingsManager 知道如何使用一些不同类型的控件。
但是,当存储控件设置的正确时机时,哪个容器是 Window 或 UserControl?
wpf - 将 ScrollViewer 附加到 FrameworkElement?
是否可以使用 anAdorner
或其他方式动态获取 aUIElement/FrameworkElement
并将其放置在动态创建的 中ScrollViwer
?我知道明显的问题是您必须首先将元素与其父元素分离,但我正在寻找一种优雅的方式来做到这一点。
silverlight - FrameworkElement 是否渲染?
有没有办法知道肯定FrameworkElement
是渲染到屏幕上的。例如。我有两个矩形,一个与另一个重叠。但我不确定一个与另一个重叠的“多少”。
所以我需要知道用户会看到两个矩形,还是只会看到一个,或者会完全看到一个和部分?
wpf - FrameworkElement 的 DataContext 属性不会沿元素树继承
你好 WPF 专业人士至少我希望你们中的一些人读到这个!
DataContext 是 FrameworkElement(所有 WPF 控件的基类)上的属性,并作为 DependencyProperty 实现。这意味着逻辑树中的所有后代元素共享相同的 DataContext。
所以 ContentControl 应该用它的后代元素来做吗?
我有一个情况并非如此,我想知道这种不当行为的原因是什么?!
如果您对它有更多了解,请阅读问题开始的这个线程(不想在这里复制所有内容)......:
WPF:找不到触发目标“cc”。目标必须出现在任何 Setter、Triggers 之前
简而言之:我在 ContentControl 中的 DataTemplates 确实有一个死的 DataContext 这意味着没有什么可以绑定到它,实际上是不可能的......
ContentControl 下方的每个元素都没有在 DataContext 属性中设置任何内容???
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 覆盖方法。有任何想法吗?
c# - C# WPF 在 Stackpanel 中以编程方式创建的 DataTemplate Dockpanel 没有效果
我正在尝试为列表框动态创建数据模板。这是一个自定义用户控件。此 UserControl 有一个DependencyProperty,它接受任何类型的IEnumerable<>。
这工作正常......但输出总是
- 适当的价值
- 适当的价值
如果对象包含 2 个属性。但我希望这些属性并排排列。像:
对象 1:
- 财产/价值财产/价值
对象 2:
- 财产/价值财产/价值
那么我哪里错了?我首先制作一个 Stackpanel,然后在 Stackpanel 中制作包含标签的 Dockpanels。
这是一个小预览它现在的样子。
所以这是我创建数据模板的代码:
c# - WPF FrameworkElement 鼠标点击问题
在 WPF 应用程序中,我在 Grid 中有一堆 CustomControls。为了处理鼠标单击它们,我使用了MouseLeftButtonDown
Grid 的事件,并在事件处理程序中检查单击了哪个 CustomControl:
当我将所有 CustomControls 放在 UserControl 中,然后放在 Grid 中时,问题就出现了。在这种情况下,方法不起作用。
我检查了每种情况下的点击源类型,e.Source.GetType().ToString();
并得到以下结果:
当没有问题时(如果我将CustomControls放在没有UserControl的Grid中)
当我将 CustomControls 放入 UserControl 然后放入 Grid
当我将 CustomControls 放入 UserControl 然后放入 Grid 并通过XamlReader.Load
所以,我的问题是:
如何使 CustomControls 像e.Source
在 UserControl 中一样可见?
wpf - 在 WPF 中,如何为 Template 中设计的 FrameworkElement 添加 EventHandler?
我为外部资源字典中的项目DataTemplate
定义了以下内容:ListBox
我需要为 Slider 的ValueChanged
事件提供事件处理方法。我不知道应该在哪里编写该代码,因为在模板中为控件指定事件处理程序是不切实际的。
我一直在搜索解决方案,发现我应该在OnApplyTemplate()
方法的覆盖中添加事件处理程序。我的猜测是它应该看起来像这样或类似的东西:
但是我应该在哪里写这个方法?OnApplyTemplate 覆盖是否仅适用于 ControlTemplates 还是我的方案也包括在内?我应该提供 ControlTemplate 而不是 DataTemplate 吗?我提供的方法的主体是否正确?
请帮忙。谢谢。
c# - WPF 自定义 FrameworkElement / IScrollInfo
我有一个带有基本自定义FrameworkElement
实现的简单测试应用程序(下面的 TestElement)。TestElement 创建了几个绘图视觉效果,并在构造函数中绘制了一些宽度为 600 的东西。它还实现了 IScrollinfo 的必要位;包含该元素的窗口有一个滚动查看器,最大尺寸为 300x300。滚动条出现但不滚动 TestElement 的内容。
谁能建议我正在尝试做的事情是否可行,如果可以,我做错了什么。我可以在 SetHorizontalOffset 中重新渲染绘图视觉效果,但出于性能原因不想这样做,因为我已经绘制了我需要的所有内容。
我希望这个问题有意义 - 如果没有,请告诉我,我可以澄清一下。
非常感谢 - 卡尔
xml:
wpf - FrameworkElement.Name 问题
我正在尝试在构造函数中设置 Page 的 Name 属性:
但是,我经常收到以下错误消息。
哪里x
似乎几乎是任何东西,深入研究异常细节似乎并没有提供任何有用的信息(例如 InnerException 为空。)
有谁知道这里发生了什么?