我正在尝试根据DataRecordPresenter
根据XamDataGrid
设置VisualBrush
中的每个<!-- idp bound to namespace for Infragistics DataPresenters -->
<idp:XamDataGrid>
<idp:XamDataGrid.Resources>
<Style TargetType={x:Type idp:DataRecordPresenter>
<Style.Setters>
<!-- THE RELATIVESOURCE FAILS HERE -->
<Setter Property="Tag">
<Grid DataContext={Binding RelativeSource={RelativeSource Mode=FindAncestor,TargetType={x:Type idp:DataRecordPresenter}}}>
<!-- Content that relies on properties of the DataRecordPresenter -->
</Grid>
</Setter>
<Setter Property="Background">
<!-- THE RELATIVESOURCE WORKS HERE -->
<VisualBrush
ViewPort="12,12,12,12"
Visual="{Binding Tag,RelativeSource={RelativeSource Mode=FindAncestor,TargetType={x:Type idp:DataRecordPresenter}}"
>
</VisualBrush>
</Setter>
</Style.Setters>
</Style>
</idp:XamDataGrid.Resources>
</idp:XamDataGrid>
样式,该VisualBrush
应根据相关演示者进行缩放。具体来说,我的目标是突出显示某些行,其中突出显示模式可能很复杂(即任意大,虽然实际上可能不超过5-6种颜色)。
我希望使用的解决方案看起来像这样:
Tag
问题在于,虽然我能够在构造实际Background
时识别DataRecordPresenter(使用Snoop测试 - 按预期结果是VisualBrush
属性的内容),同时尝试查找同一个对象通过Tag属性的setter上下文中的相同机制,我无法识别任何这样的祖先。
我怀疑这是因为Tag属性与可视(或逻辑)树没有关联,而VisualBrush
是,但我还没有设法解决问题。我同样很乐意将网格移到STRING DOT METHOD_NAME
,但我相信"hello".length
也与相关树分开,所以我不认为' ll工作,或者至少不使用简单的内联定义。