Mvvm XamDataGrid字段值作为渐变背景
我有Infragistics XamDataGrid,其中很少有列以百分比显示数据 现在我希望这些列以百分比的形式显示值,以2色渐变的形式显示背景,其中第一种颜色将绑定到百分比值,第二种颜色将绑定到剩余值 解决方法是模板化cellvaluepresenter,通过它可以对单元格进行样式设置 您可以使用TargetType=“{x:Type igDP:CellValuePresenter}”创建样式 但现在的问题是,我如何确定后端的价值,并根据价值显示背景 下面是代码。在这段代码中,当我在CellValuePresenterStyle中使用StaticResource时。绑定工作正常,但未调用样式中的转换器。在CellValuePresenterStyle中使用DynamicSource时,绑定中断,列中的值为空Mvvm XamDataGrid字段值作为渐变背景,mvvm,wpf-controls,infragistics,xamdatagrid,Mvvm,Wpf Controls,Infragistics,Xamdatagrid,我有Infragistics XamDataGrid,其中很少有列以百分比显示数据 现在我希望这些列以百分比的形式显示值,以2色渐变的形式显示背景,其中第一种颜色将绑定到百分比值,第二种颜色将绑定到剩余值 解决方法是模板化cellvaluepresenter,通过它可以对单元格进行样式设置 您可以使用TargetType=“{x:Type igDP:CellValuePresenter}”创建样式 但现在的问题是,我如何确定后端的价值,并根据价值显示背景 下面是代码。在这段代码中,当我在Cell
<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,0,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,0,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>
以上代码中的所有内容都是正确的,只需使用以下代码更改样式即可
<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,0,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>
是的,我能做到。但是我应该绑定到字段/单元格的哪个属性来显示背景。我已经实现了大部分内容。只是我不能显示的价值基础上的背景。你能告诉我解决方法吗?你的帮助将是巨大的。是的,我能做到。但是我应该绑定到字段/单元格的哪个属性来显示背景。我已经实现了大部分内容。只是我不能显示的价值基础上的背景。你能告诉我解决方法吗?你的帮助将是巨大的。