如何从setter的值访问样式化对象?

时间:2017-04-11 17:52:20

标签: wpf xaml infragistics

我正在尝试根据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工作,或者至少不使用简单的内联定义。

0 个答案:

没有答案