问题标签 [relativesource]

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

silverlight - 通过RelativeSource 和FindAncestor 向上到达树以更改依赖属性

今天想学习一些新东西,并希望有人能用一种优雅的方式在 XAML 中完成这项工作。

因此,对于这个概念,请看下面的例子;

这显然行不通(也没有预料到),但是......它传达了我想要完成的概念。到达树以在运行时操作祖先依赖项,但无法直接定位元素,即使它们可能位于单独的 UserControl 中并被放在一个视图中。

我尝试在 Loaded 事件中抛出 Storyboard 以使用 DoubleAnimation 和其他一些尝试来更改属性,但到目前为止没有任何乐趣,这是可以理解的,但这一切都只是以提高技能的名义。我正在尝试完全使用 XAML 来完成它,我相信这只是另一双眼睛可以提供不同途径的其中之一。

0 投票
2 回答
700 浏览

c# - RelativeSource 绑定未解析

我在 TreeView 中有一个 ContextMenu

我想将 ContextMenuItem 的命令绑定到 ViewModel 中的 RelayCommand,我尝试了各种 RelativeSource 绑定,但似乎没有任何效果......

我应该如何配置 RelativeSource 绑定?

我收到绑定错误,例如

无法通过引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.TreeView',AncestorLevel='1'”找到绑定源。BindingExpression:Path=DataContext.ExcludeSeasonCommand; 数据项=空;目标元素是'MenuItem'(名称='');目标属性是“命令”(类型“ICommand”)

0 投票
1 回答
1129 浏览

wpf - WPF:自定义依赖属性上的相对源数据绑定

我正在尝试创建一个自定义多值组合框。所以基本上是一个带有一些复选框作为项目的组合框。这个想法是,保持整个控件完全可绑定,以便我可以随时重用。

这是 XAML

以及自定义属性“SelectedItems”背后的代码

现在,当我测试项目时,RelativeSource 已正确解析为控件本身,但是路径“SelectedItems”上的绑定失败,调试器指出,RelativeSource 对象上没有这样的路径。

我是搞砸了绑定还是我犯了一个完全的逻辑错误?

0 投票
1 回答
988 浏览

wpf - 如何在样式中使用绑定相对源

使用默认样式

有用。但就我而言,我需要自定义TabItem所以我使用

现在的问题Header是没有显示文本。有任何想法吗?

0 投票
3 回答
1880 浏览

wpf - 如何提高 RelativeSource FindAncestor 的性能?

FindAncestor在Window的整个Visual树中搜索一个元素吗?

如果是,那我该如何改进呢?

binding data error如果我们通过使用 Find Ancestor 查找元素来访问对象的属性并且不存在这样的元素,是否会抛出?

如果是,那么我该如何解决这样的错误。

在我的情况下,绑定错误是在输出窗口上抛出的。为了解决这个错误,我尝试了设置FallbackValue,但现在它给了我警告而不是错误,这是唯一的区别。其他一切都与错误相同。

有人能告诉我究竟是如何FindAncestor工作的吗?

0 投票
1 回答
1296 浏览

wpf - 相对源同级

tabitem3 下面工作正常。
我想摆脱命名控件并通过RelativeSource传递属性。

失败的代码是

转换器中的错误是未设置依赖对象

Expander 是兄弟而不是祖先。
我怎样才能找到那个兄弟姐妹(没有 x:Name)?

0 投票
1 回答
237 浏览

wpf - 相对源绑定表达式错误

RelativeSource BindingDataTemplate其中一个 ViewModel 类中使用 WPF,如下所示:

根 ViewModelViewModelA具有此 ViewModel 的一个实例作为公共属性,并且还有一个DataTemplate用于它的实例,如下所示:

如您所见,我希望 View 上有一些东西ViewModelB被触发VisibleHidden基于 on 的属性ViewModelA

这种方法效果很好。

但是,ViewModelA它本身也在ContentPresenter. 当我更改此内容ContentPresenter(例如更改为ViewModelC)时,我的调试日志中会出现一些绑定异常,例如:

我在这里猜测,Binding在处理实际视图之前,DataContext 会被更新。可以做些什么来解决这种行为?

0 投票
1 回答
501 浏览

c# - 为什么绑定到祖先比通过名称绑定到元素或绑定到 DataContext 更晚?

我在尝试在代码中短时间设置绑定时注意到了这一点。其实我只是想获取绑定提供的值。所以我设置绑定,获取目标属性的值并立即清除绑定。一切都很好,直到为绑定设置了模式 FindAncestor 的 RelativeSource。在这种情况下,目标属性返回其默认值。

经过一些调试后,我发现 FindAncestor 绑定的 BindingExpression 的属性 Status 设置为 Unattached。对于其他类型的绑定,BindingExpression.Status 设置为 Active。

我写了一些代码来说明这一点。

Window1.xaml

Window1.xaml.cs

上面的代码产生以下输出:

但尽管如此,表单上的所有三个 TextBlock 都具有预期值 - “DataContext 内容”。

所以我的问题是:

  1. 为什么在调用 BindingOperations.SetBinding(...) 后,RelativeSourceMode.FindAncestor 绑定不立即提供值?

  2. 有没有办法强制这种绑定更新目标属性?我试图调用 bindingExpression.UpdateTarget() - 它不像预期的那样工作。

0 投票
1 回答
1507 浏览

c# - 如何在 DataTemplate 中设置网格的高度

DataTemplate在 aItemsControl里面UserControl。UserControl 在堆栈面板中被多次添加。(很少)

我需要能够确定堆栈面板有多少个孩子。我认为使用该FindAncestor模式可以做到这一点,但恐怕我需要你的帮助。

这是 XAML 逻辑:

所以我基本上想知道有多少用户控件被添加到堆栈面板中,并且能够使用这个数量的孩子来计算 DataTemplate 内网格的高度。

FindAncestor 相对来源给我一个错误,说相对上下文不支持儿童。

0 投票
1 回答
296 浏览

wpf - 绑定到相对源中的属性将我发送到主窗口 + Catel

有以下xaml代码

当我尝试绑定内部视图的 Visibility 属性时

对于父级,它一直将我发送到主窗口的数据上下文。

父级加载在主窗口内的 contentControl 中。

为什么我不能绑定到父用户控件的数据上下文?