我的目标是绑定 content - label 的property tag - 元素的property em elements样式是应用于.但是我的解决方案似乎不起作用: 我的风格:
以下是关于 relativesource 的编程技术问答
我为我的自定义控制MyControl创建了ControlTemplate. MyControl源于System.Windows.Controls.Control并定义以下属性public ObservableCollection Children{ get; protected set; }. 要显示嵌套的子控制器,我正在使用ItemsControl(StackPanel),该ItemsControl(StackPanel)被A GroupBox包围.如果没有子控件,我想隐藏GroupBox. 在应用程序启动时,一切正常:如果最初包含至少一个元素,则显示了组框和子控制器.在另一种情况下,它是隐藏的. 当用户将子控件添加到空集合中时,问题开始. GroupBox的可见性仍然崩溃.当从集合中删除最后一个子控制时,也会发生同样的问题. GroupBox仍然可见. 另一个症状是HideEmptyEnumerationConverter转换器未被调用.
您是否遇到过这样的问题: System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''. BindingExpression:Path=DataContext; DataItem=null; target element is 'ContextMenu' (Name=''); target property is 'DataContext' (type 'Object') 代码:
如何与WPF绑定使用RelativeSource? 是什么不同的用例? 解决方案 如果要绑定到对象上的另一个属性: {Binding Path=PathToProperty, RelativeSource={RelativeSource Self}} 如果您想在祖先上获得财产: {Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}} 如果要在模板父母上获取属性(因此可以在ControlTemplate中进行两种方式绑定) {Binding Path=PathToProperty, RelativeSource={RelativeSource TemplatedParent}} 或较短(这仅适用于单向绑定): {TemplateBinding Path=PathToProperty} 其他解决方
如何使用RelativeSource与wpf绑定以及不同的使用情况? 解决方案 如果要绑定到对象上的另一个属性: {Binding Path=PathToProperty, RelativeSource={RelativeSource Self}} 如果要在祖先上获取属性: {Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}} 如果要在模板父级上获取属性(因此您可以在ControlTemplate中执行2路绑定) {Binding Path=PathToProperty, RelativeSource={RelativeSource TemplatedParent}} 或,较短(这仅适用于Onway绑定): {TemplateBinding Path=PathToProperty}
我目前正在使用 WPF 用户控件(我的 XAML 文件的根元素是“UserControl"),我知道它托管在 Window 中.如何使用数据绑定访问 Window 的属性? 有谁知道为什么这么简单 不工作?我得到的错误信息是: System.Windows.Data 警告:4 : 无法通过引用 'RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1'' 找到绑定源. 编辑:我最终使用了 ArsenMkrt 方法的变体,因此接受了他的回答.但是,我仍然有兴趣找出 FindAncestor 不能“正常工作"的原因. 解决方案 最好的办法是给UserCo