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

0 投票
1 回答
72 浏览

wpf - 尽管控件不在 VisualTree 中,但如何将控件显示出来

我很抱歉这个愚蠢的标题,但我的要求与此非常相似。

我有一个从DatePicker. 我没有任何单独的控制结构。我需要将弹出窗口附加到其结构。所以我正在做的是在我的自定义控件的构造函数中,使用放置目标作为我的自定义控件初始化一个新的弹出窗口。

在这里我知道这个弹出窗口不会出现在可视树中。我需要在单击按钮时显示此弹出窗口。

对不起,我的英语不好。希望问题很清楚...

谢谢

0 投票
3 回答
1123 浏览

c# - 如何找到 DataTemplate 生成的 UIElement

嗨,我尝试从 DataTemplate 中找到生成的 UIElement

但我无法找到应该在我的 ContentPresenter 中某处的 UserControl 我通过断点和 Snoop 查看了控件,但我找不到 UserControl

有人可以启发我在哪里可以找到它吗?

这是我的测试项目:

应用 XAML

看法

虚拟机

主窗口 XAML

代码隐藏

0 投票
1 回答
696 浏览

wpf - 使用 ElementName 从绑定中获取绑定源对象

我需要将一些东西绑定到我的 VisualTree 中一个元素的子级。

在用户控件中:

在 DataGrid 的模板中:

我想做的是遍历 DataGrid 的 VisualTree,为此我创建了一个自定义标记扩展:

在 ProvideValue 中,在将绑定的 ElementName 值命名为 name 之后,我不想找到 DataGrid(绑定的源对象),

如何从刚刚创建的绑定中提取 DependencyObject(我的 DataGrid)?

0 投票
0 回答
593 浏览

c# - 从 ListBox wp8 中查找子元素

我正在尝试从 Listbox 中查找子元素。列表框包含Itemtemplate. 这是我的设计。我创建了UserControl. 在那我添加了ListBox。我将此控件显示为弹出窗口。这是弹出的代码

这里来自FilesListControl的代码

我想找到CheckBoxie chkFile。这是我的代码

但什么都没有。我做错了什么?如何访问CheckBox Click 事件?

0 投票
1 回答
497 浏览

c# - wpf中组合框选择的奇怪行为

我正在开发一个应用程序,其中我们有一个主窗口,它在不同的停靠选项中有很多子窗口。因此,一个停靠栏有一个属性面板窗口,允许用户修改所选实体的属性,并且在更改值后,用户必须单击控件底部的应用按钮。所以,我愿意拥有某种功能,如果用户修改了一些值而不是点击应用,如果用户点击属性面板视图的子控件之外的其他地方,那么用户应该收到一条消息“请先点击申请以保存您的更改”。为此,我在 MainWindow 的鼠标按下事件中编写了以下代码。

因此,逻辑是这样的,在主窗口的鼠标按下时,获取命中对象并检查它是否是属性面板控件的子控件,那么它将 PropertyPanelUserControl 作为其父控件,而其他控件不是部分或子控件PropertyPanelUserControl,然后会提示用户单击应用。

上面的代码工作得很好......但我发现了一个奇怪的问题,我在属性面板中有一个组合框,其中包含从 1 到 10 的条目。因此,当用户尝试将值更改为其他值时,用户不会收到该消息,因为到目前为止,用户正在单击属性面板控件,并且当我在组合框中选择一个项目后检查鼠标按下事件中的命中对象时,命中对象是 chromeButton 或组合框。但是当我选择最后一项 10 时,命中对象作为具有属性面板控件的边框出现。

<Border><View:PropertyPanelControl/></Border>以上检查失败,因为边框没有祖先作为属性面板控件,而是边框是控件的祖先。因此,即使仅更改组合框值,用户也会收到一条消息,此外,我已确保我单击的组合框项目不在外部,所以,现在的问题是为什么 wpf 以这种奇怪的方式表现以及如何解决这个问题。

0 投票
1 回答
1735 浏览

c# - 如何在不与之交互的情况下访问 XAML DataTemplate Listview 中的元素

我有一个 C# 商店应用程序并使用 DataTemplate 选择器来确定要在绑定到数组的 ListView 控件中使用哪种类型的模板。因为它是模板化的,所以我不能为每个 ListView Row 分配一个动态 x:Name。

我需要能够通过索引访问列表视图行并将它们的可见性设置为开或关。我已经尝试过这样的事情,但是每次.ItemContainerGenerator .ContainerFromItem(item);返回并且我都会得到一个 Nullable 异常:null

如何访问 XAML DataTemplate 中的控件?

经过一些研究,似乎上述解决方案仅在我触摸或设置了 SelectedItem 时才有效。看这里

为什么 ItemContainerGenerator 返回 null?

我需要能够在页面加载(初始设置)以及按钮单击和修改某些行的可见性时调用方法。

0 投票
0 回答
121 浏览

c# - WPF Detect UserControl 被覆盖/不显示

如果我有 a Usercontrol,它被另一个控件(Grid例如 a )覆盖,是否有事件或触发器发现UserControl当前被某些东西覆盖?也许是来自 VisualTree 的事件或某种监听器?

在此处输入图像描述

0 投票
1 回答
3672 浏览

c# - 视觉树中的 ComboBox 弹出窗口在哪里?

我可以在可视化树的哪个位置找到 ComboBox 弹出窗口(带有 ComboBoxItems 的列表)?

我以编程方式打开了一个组合框,当在调试器的 WPF 树可视化工具中观看它时,我看到以下内容:

我希望看到带有某种项目主机(StackPanel?)的 ScrollViewer,可能是 PART_Popup 所在的位置,但什么也没有。

那么它在哪里呢?

0 投票
1 回答
1472 浏览

c# - 在动态填充的 TabControl 中为 TabItems 设置正确的 DataContext

我无法使用动态填充DataContext的.TabItemsTabControl

使用下面的代码,我将 my 绑定到ItemsSourcemy上TabControl的一个.ObservableCollection<TabViewModel>MainViewModel

根据Type中每个的属性,TabViewModel选择ItemSource不同UserControl的作为 的Content属性TabItem正是在这里开始出错

这些UserControls需要将其DataContext设置为MainViewModel,但是无法访问它,因为动态TabItems似乎是在不同的可视化树中创建的。

关于如何实现这一点的任何想法。ViewModels如果我能提供帮助,我真的不想在两者之间引用数据。

0 投票
0 回答
751 浏览

wpf - VisualTree 属性设置不止一次错误

为什么此代码会在运行员工编号、姓名和卡车编号的文本块上引发“VisualTree set more than once”错误?它在数据模板中。我尝试将该部分包装在网格中,但它没有用。