问题标签 [visual-tree]
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 - WPF 中通过可视化树继承的字体属性有哪些?
WPF 具有通过可视化树继承的某些字体属性。例如,这允许更改FontFamily
on aUserControl
并使其中的所有文本都反映该更改。
在可视化树中通过继承传递的所有字体相关属性是什么?
c# - 检查指定元素是否已经是另一个元素的逻辑子元素
我是 C# 和 WPF 的初学者。我正在为一个名为 vvvv 的基于节点的软件编写插件。我已经实现了滑块、按钮和其他简单的 ui 元素。以下代码显示了滑块节点在 c# 中的外观:
现在我正在尝试实现一个 tabcontrol,我可以在其中动态创建 tabitem 并将 UIElement 输入其中。据我了解,我只能在一个 tabitem 中添加一个东西。所以我在考虑每次需要时创建一个网格,并用所有传入的 UIElement 填充它。
我进行了很多搜索,但找不到任何解决该错误的方法。显然将元素添加到网格会抛出“指定元素已经是另一个元素的逻辑子元素”;
c# - 如何指定将 ContextMenu 添加到 DataGridTemplateColumn 的 DataContext?
我正在通过编程方式烹饪 DataGridTemplateColumns
DataTemplate dtStringTemplate = (DataTemplate)XamlReader.Load(sr, pc);
dataGridTemplateColumn.CellTemplate = dtStringTemplate;
我尝试将 ContextMenu 添加到 DataGrid,但任何可编辑的单元格都使用了自己的上下文菜单。
到目前为止,这篇文章已经让我尽可能地让 TextBox 上下文菜单按预期出现:How to add a ContextMenu in the WPF DataGridColumn in MVVM?
使用上面提到的帖子作为指导,我在 App.xaml 中创建了 Style 和 ContextMenu;当我右键单击 DataGrid 中的单元格时,会出现我的上下文菜单。但是,我无法触发关联的命令,并且我怀疑绑定不正确。这是 App.xaml 中的 xaml:
DataGrid 的 DataContext 是 MyViewModel;MyViewModel 有一个名为 CmdMenuItemOne 的公共 DelegateCommand。
不幸的是,从未调用过 CmdMenuItemOne。
我对绑定有什么误解?谢谢 ...
c# - WPF: In an attached property, how to wait until visual tree loaded properly?
I have an Attached Property in a WPF app.
The code below is inside the OnLoad
event, but it doesn't work unless I add a hacky 500 millisecond delay in.
Is there some way to avoid this delay, and detect when the visual tree has been loaded?
Update 1
As per the answer from @Will, "use the dispatcher and select the appropriate priority". This works brilliantly:
Update 2
If using DevExpress, the LayoutTreeHelper class is useful for scanning up and down the visual tree.
For sample code that deals with scanning up and down the visual tree, see:
- DevExpress: In an attached property, how to wait until we are 100% sure that DevExpress has finished building its Visual Tree?
- DevExpress and How to ensure that a LayoutPanel is always in front of everything else?
Update 3
If you are in an attached property, the only way to reliably load the visual tree is to execute the code in or after the Loaded
event handler. If we are not aware of this limitation, then everything will fail intermittently. Waiting until after the OnLoaded
event has fired is far superior to any other method that attempts to introduce other random forms of delays, as noted above.
If you are using DevExpress, this is even more critical: attempting to do anything before the Loaded
event can, in some circumstances, result in a crash.
For example:
- Calling
window.Show()
before theLoaded
event has resulted in a crash in some circumstances. - Hooking into the event handler for
IsVisibleChanged
before theLoaded
event has result in a crash in some circumstances.
Disclaimer: I am not associated with DevExpress, it one of many good WPF libraries, I also recommend Infragistics.
c# - 创建未显示的用户控件的快照
我想拍摄尚未显示的 UserControl 的快照。那是我的代码:
当我启动我的应用程序时,此代码会为每个“MyViewModel”运行。“MyViewModel”包含一个“子视图”列表,它们是选项卡的内容,它们包含一个“FunctionKeyBar”,其按钮可以通过使用“F1”到“F12”来激活。但是在创建我的屏幕截图后,我不能再使用 F1 到 F12 了。还有其他问题,比如切换语言。是否有其他方法可以创建尚未出现的控件的快照?
感谢所有回复。
问候本尼
c# - 应该可以多次处理同一个实例
是否可以在不引发异常的情况下多次调用.Dispose
同一个实例?IDisposable
对此有什么定义吗?
例如:
我问这个的原因:
我创建了一些机制,它在VisualTree
for 元素中搜索,这些元素继承自IDisposable
,但我不能确定这些元素中的一个是否已被处置。
从窗口类中截取的一些代码
谢谢!
c# - 有什么方法可以检测视觉树中后代的添加/删除
我有一对控件,我们称它们为BigDaddy
and Flea
。一个或多个Flea
元素可能出现在BigDaddy
. 鉴于不需要它是直系孩子,有什么方法可以检测Flea
对象的添加/删除?BigDaddy
示例树:
- 或者 -
wpf - 如何获得 WPF 中的默认选项卡顺序(即视觉树顺序)?
我在我的应用程序中添加了一个验证模块,它将引导用户注意需要注意的输入。我想按照它们添加到可视树中的相同顺序浏览这些控件。每个控件的 Tab Index 设置为 Int Max,这意味着只需按 Visual Tree 的顺序进行。
我的验证模块只是得到一堆控件来验证。它需要从上到下对它们进行排序,以便用户可以按顺序浏览表单。我想保留原始的标签行为。 我只需要知道列表中控件的可视化树顺序,这样我就可以正确地对它们进行排序。
c# - 为什么单击树会引发“System.Windows.Documents.Run”不是 Visual 或 Visual3D”InvalidOperationException?
有时右键单击 treeviewitem 会导致未处理的 InvalidOperationException。在后面的代码中,我选择了右键单击的行:
根据上面的stacktrace是问题的根源。
xml:
堆栈跟踪:
我只能有时重现这个。我的同事说左键单击项目 1 和右键单击项目 2 每次都会在某些树中产生这个。