У меня есть Infragistics XamDataGrid, и в нем есть несколько столбцов, которые показывают данные в процентах.
Теперь я хочу, чтобы эти столбцы отображали значение в процентах, а Фон в виде 2-цветного градиента, в котором 1-йцвет будет привязан к процентному значению, а 2-й цвет - к оставшемуся значению.
Обходным путем для этого является Templating cellvaluepresenter, с помощью которого можно выполнять стилизацию для ячейки.
Вы можетесоздайте стиль с помощью TargetType = "{x: Type igDP: CellValuePresenter}".
Но теперь возникает вопрос: как я могу решить, какое значение исходит из серверной части, и показать фон на основе значения.
Ниже приведен код.В этом коде, когда я использую StaticResource в CellValuePresenterStyle.Привязка работает нормально, но конвертер в стиле не вызывается.Когда я использую DynamicResource в CellValuePresenterStyle, разрывы привязки и значения в столбце будут пустыми.
<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