如何解决XamDataGrid字段值作为渐变背景
| 我有Infragistics XamDataGrid,其中有几列以百分比显示数据。 现在,我希望这些列将值显示为百分比,将背景显示为2种颜色的渐变,其中第一种颜色将绑定到百分比值,而第二种颜色将剩余值。 解决方法是模板化cellvaluepresenter,通过它可以对单元格进行样式设置。 您可以使用TargetType = \“ {x:Type igDP:CellValuePresenter} \”创建样式。 但是现在出现了一个问题,即我该如何确定后端产生了什么价值,并根据价值显示背景。 以下是代码。在此代码中,当我在CellValuePresenterStyle中使用StaticResource时。绑定工作正常,但未调用样式中的转换器。当我在CellValuePresenterStyle中使用DynamicResource时,绑定中断,并且列中的值为空。<igDP:XamDataPresenter x:Name=\"xamDataPresenter1\" Height=\"300\" DataSource=\"{Binding DV}\" >
<igDP:XamDataPresenter.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields=\"True\" HeaderPrefixAreaDisplayMode=\"FieldChooserButton\"
/>
</igDP:XamDataPresenter.FieldLayoutSettings>
<igDP:XamDataPresenter.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.FieldSettings>
<igDP:FieldSettings CellClickAction=\"SelectCell\" AllowEdit=\"False\" />
</igDP:FieldLayout.FieldSettings>
<igDP:FieldLayout.Fields>
<!--<igDP:UnboundField Name=\"ProductID\" Label=\"Product ID\" />-->
<igDP:Field Name=\"LocationID\" DisallowModificationViaClipboard=\"True\" >
<igDP:Field.Settings>
<igDP:FieldSettings CellValuePresenterStyle=\"{DynamicResource myCustomFieldCell}\"/>
</igDP:Field.Settings>
</igDP:Field>
<!--You can add more Field objects here-->
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataPresenter.FieldLayouts>
</igDP:XamDataPresenter>
样式代码
<local:StringToDoubleConverter x:Key=\"stringToDoubleConverter\" />
<Style x:Key=\"myCustomFieldCell\" TargetType=\"{x:Type igDP:CellValuePresenter}\">
<Setter Property=\"Template\">
<Setter.Value>
<ControlTemplate TargetType=\"{x:Type igDP:CellValuePresenter}\">
<Grid>
<Border Panel.ZIndex=\"0\" Width=\"{Binding ElementName=textBlock,Path=Text,Converter={StaticResource stringToDoubleConverter}}\" HorizontalAlignment=\"Left\">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color=\"Red\" Offset=\"0\" />
<GradientStop Color=\"Transparent\" Offset=\"1\" />
<GradientStop Color=\"White\" Offset=\".99\" />
</LinearGradientBrush>
</Border.Background>
</Border>
<TextBlock Panel.ZIndex=\"1\"
Width=\"Auto\"
Height=\"Auto\"
Text=\"{TemplateBinding Content}\"
HorizontalAlignment=\"Center\"
Margin=\"5,0\"
VerticalAlignment=\"Center\"
x:Name=\"textBlock\" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
任何人都可以为此提供任何解决方法。
谢谢,
VJ
解决方法
上面的代码中的所有内容都是正确的,只需使用以下代码更改样式即可。
<Style x:Key=\"myCustomFieldCell\" TargetType=\"{x:Type igDP:CellValuePresenter}\">
<Setter Property=\"OverridesDefaultStyle\" Value=\"True\"/>
<Setter Property=\"Template\">
<Setter.Value>
<ControlTemplate TargetType=\"{x:Type igDP:CellValuePresenter}\">
<Grid>
<ContentPresenter Panel.ZIndex=\"1\"
Content=\"{TemplateBinding Content}\"
HorizontalAlignment=\"Center\"
Margin=\"5,0\"
VerticalAlignment=\"Center\"
x:Name=\"contentPresenter\" />
<Border Panel.ZIndex=\"0\" Width=\"{Binding ElementName=contentPresenter,Path=Content,Converter={StaticResource stringToDoubleConverter}}\" HorizontalAlignment=\"Left\">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color=\"Red\" Offset=\"0\" />
<GradientStop Color=\"Transparent\" Offset=\"1\" />
<GradientStop Color=\"White\" Offset=\".99\" />
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
, 我相信您可以创建两个转换器,这些转换器将计算渐变开始/停止键的颜色,并将通过数据绑定接受百分比值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。