gpt4 book ai didi

mvvm - XamDataGrid 字段值作为渐变背景

转载 作者:行者123 更新时间:2023-12-03 10:40:16 32 4
gpt4 key购买 nike

我有 Infragistics XamDataGrid,其中有几列以百分比显示数据。

现在我希望这些列将值显示为百分比,将背景显示为 2 色渐变,其中第一种颜色将绑定(bind)到百分比值,而第二种颜色将剩余值。

解决方法是模板化 cellvaluepresenter,通过它您可以在 Cell 上进行样式设置。

您可以使用 TargetType="{x:Type igDP:CellValuePresenter}"创建样式。

但是现在问题来了,我如何才能确定来自后端的值并根据值显示背景。

以下是代码。在这段代码中,当我在 CellValuePresenterStyle 中使用 StaticResource 时。绑定(bind)工作正常,但未调用样式中的转换器。当我在 CellValuePresenterStyle 中使用 DynamicResource 时,绑定(bind)中断并且列中的值为空。

<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>

任何人都可以为此提供任何解决方法。

谢谢,

主播

最佳答案

上面代码中的一切都是正确的,只需用下面的代码更改样式即可。

<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>

关于mvvm - XamDataGrid 字段值作为渐变背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172579/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com