wpf - 在嵌套样式/DataGrid DataTemplates 中找不到参考绑定源
问题描述
我有一个Control
( ZlsUnitBrowserActive
) 和两个DependencyProperties
MaxWidthIdentifier
/ PropertiesDataTemplate
。尝试将这两个属性绑定在以下位置时,我被卡住了Style
:
System.Windows.Data 错误:4:找不到与引用“RelativeSource FindAncestor,AncestorType='PlcFramework.Zls.Production.ProductionControls.ZlsUnitBrowserActive',AncestorLevel='1''的绑定源。BindingExpression:Path=PropertiesDataTemplate; 数据项=空;目标元素是“DataGridTemplateColumn”(HashCode=30225241);目标属性是“CellTemplate”(类型“DataTemplate”)
<Style TargetType="productionControls:ZlsUnitBrowserActive">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="productionControls:ZlsUnitBrowserActive">
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate
MaxWidth="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=productionControls:ZlsUnitBrowserActive}, Path=MaxWidthIdentifier}"
CellTemplate="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=productionControls:ZlsUnitBrowserActive}, Path=PropertiesDataTemplate}"/>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
有什么特别的技巧吗?也尝试通过缓存ZlsUnitBrowserActive
实例DataGrid.Tag
(见帖子:https ://stackoverflow.com/a/3668699/6229375 ),但没有成功。
解决方案
不能DataGridColumn
使用 a 将 a 的属性绑定到可视祖先的RelativeSource
原因是列本身不是可视树的一部分,因此它没有要绑定的祖先。
尽管该DataGrid
控件是可视树的一部分,但“BindingProxy”可用于绑定和“捕获” a ,DataContext
例如使用RelativeSource
.DataGrid
Thomas Levesque 写了一篇博文详细解释了这一点:https ://thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited /。
推荐阅读
- python - 更改 1 列,其余部分保持不变
- bash - 使用 SCP 的语法是否发生了变化?在较新的服务器上出现意外的文件名错误
- c++ - 下面的代码输出 1 和 0 但是我不知道为什么
- javascript - 在 React 中显示图像文件夹
- sockets - WiFiP2PManager 连接 WiFiP2PConfig - 将端口号传递给客户端?
- c++ - SIMD C++ AVX2 Intrinsics 获取具有 16 位整数的 __m256i 向量的总和
- google-apps-script - 对 directory.members.insert 的 API 调用失败并出现错误:找不到资源:groupKey
- android - 使用 XML 中的背景属性不会更改按钮颜色
- html - 当用户输入 x 时,如何让 x 数量的输入框出现?
- python - How to add a row to every group with pandas groupby?