问题标签 [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.
silverlight - 通过RelativeSource 和FindAncestor 向上到达树以更改依赖属性
今天想学习一些新东西,并希望有人能用一种优雅的方式在 XAML 中完成这项工作。
因此,对于这个概念,请看下面的例子;
这显然行不通(也没有预料到),但是......它传达了我想要完成的概念。到达树以在运行时操作祖先依赖项,但无法直接定位元素,即使它们可能位于单独的 UserControl 中并被放在一个视图中。
我尝试在 Loaded 事件中抛出 Storyboard 以使用 DoubleAnimation 和其他一些尝试来更改属性,但到目前为止没有任何乐趣,这是可以理解的,但这一切都只是以提高技能的名义。我正在尝试完全使用 XAML 来完成它,我相信这只是另一双眼睛可以提供不同途径的其中之一。
c# - RelativeSource 绑定未解析
我在 TreeView 中有一个 ContextMenu
我想将 ContextMenuItem 的命令绑定到 ViewModel 中的 RelayCommand,我尝试了各种 RelativeSource 绑定,但似乎没有任何效果......
我应该如何配置 RelativeSource 绑定?
我收到绑定错误,例如
无法通过引用“RelativeSource FindAncestor,AncestorType='System.Windows.Controls.TreeView',AncestorLevel='1'”找到绑定源。BindingExpression:Path=DataContext.ExcludeSeasonCommand; 数据项=空;目标元素是'MenuItem'(名称='');目标属性是“命令”(类型“ICommand”)
wpf - WPF:自定义依赖属性上的相对源数据绑定
我正在尝试创建一个自定义多值组合框。所以基本上是一个带有一些复选框作为项目的组合框。这个想法是,保持整个控件完全可绑定,以便我可以随时重用。
这是 XAML
以及自定义属性“SelectedItems”背后的代码
现在,当我测试项目时,RelativeSource 已正确解析为控件本身,但是路径“SelectedItems”上的绑定失败,调试器指出,RelativeSource 对象上没有这样的路径。
我是搞砸了绑定还是我犯了一个完全的逻辑错误?
wpf - 如何在样式中使用绑定相对源
使用默认样式
有用。但就我而言,我需要自定义TabItem
所以我使用
现在的问题Header
是没有显示文本。有任何想法吗?
wpf - 如何提高 RelativeSource FindAncestor 的性能?
是FindAncestor
在Window的整个Visual树中搜索一个元素吗?
如果是,那我该如何改进呢?
binding data error
如果我们通过使用 Find Ancestor 查找元素来访问对象的属性并且不存在这样的元素,是否会抛出?
如果是,那么我该如何解决这样的错误。
在我的情况下,绑定错误是在输出窗口上抛出的。为了解决这个错误,我尝试了设置FallbackValue
,但现在它给了我警告而不是错误,这是唯一的区别。其他一切都与错误相同。
有人能告诉我究竟是如何FindAncestor
工作的吗?
wpf - 相对源同级
tabitem3 下面工作正常。
我想摆脱命名控件并通过RelativeSource传递属性。
失败的代码是
转换器中的错误是未设置依赖对象
Expander 是兄弟而不是祖先。
我怎样才能找到那个兄弟姐妹(没有 x:Name)?
wpf - 相对源绑定表达式错误
我RelativeSource
Binding
在DataTemplate
其中一个 ViewModel 类中使用 WPF,如下所示:
根 ViewModelViewModelA
具有此 ViewModel 的一个实例作为公共属性,并且还有一个DataTemplate
用于它的实例,如下所示:
如您所见,我希望 View 上有一些东西ViewModelB
被触发Visible
或Hidden
基于 on 的属性ViewModelA
。
这种方法效果很好。
但是,ViewModelA
它本身也在ContentPresenter
. 当我更改此内容ContentPresenter
(例如更改为ViewModelC
)时,我的调试日志中会出现一些绑定异常,例如:
我在这里猜测,Binding
在处理实际视图之前,DataContext 会被更新。可以做些什么来解决这种行为?
c# - 为什么绑定到祖先比通过名称绑定到元素或绑定到 DataContext 更晚?
我在尝试在代码中短时间设置绑定时注意到了这一点。其实我只是想获取绑定提供的值。所以我设置绑定,获取目标属性的值并立即清除绑定。一切都很好,直到为绑定设置了模式 FindAncestor 的 RelativeSource。在这种情况下,目标属性返回其默认值。
经过一些调试后,我发现 FindAncestor 绑定的 BindingExpression 的属性 Status 设置为 Unattached。对于其他类型的绑定,BindingExpression.Status 设置为 Active。
我写了一些代码来说明这一点。
Window1.xaml
Window1.xaml.cs
上面的代码产生以下输出:
但尽管如此,表单上的所有三个 TextBlock 都具有预期值 - “DataContext 内容”。
所以我的问题是:
为什么在调用 BindingOperations.SetBinding(...) 后,RelativeSourceMode.FindAncestor 绑定不立即提供值?
有没有办法强制这种绑定更新目标属性?我试图调用 bindingExpression.UpdateTarget() - 它不像预期的那样工作。
c# - 如何在 DataTemplate 中设置网格的高度
用DataTemplate
在 aItemsControl
里面UserControl
。UserControl 在堆栈面板中被多次添加。(很少)
我需要能够确定堆栈面板有多少个孩子。我认为使用该FindAncestor
模式可以做到这一点,但恐怕我需要你的帮助。
这是 XAML 逻辑:
所以我基本上想知道有多少用户控件被添加到堆栈面板中,并且能够使用这个数量的孩子来计算 DataTemplate 内网格的高度。
FindAncestor 相对来源给我一个错误,说相对上下文不支持儿童。
wpf - 绑定到相对源中的属性将我发送到主窗口 + Catel
有以下xaml代码
当我尝试绑定内部视图的 Visibility 属性时
对于父级,它一直将我发送到主窗口的数据上下文。
父级加载在主窗口内的 contentControl 中。
为什么我不能绑定到父用户控件的数据上下文?