2

I've a datagrid in my xaml:

<dg:DataGridTextColumn Header="A"
                       Width="110"
                       Binding="{Binding ValueA, StringFormat=N2}"
                       IsReadOnly="true"
                       FontWeight="Bold">
    <dg:DataGridTextColumn.CellStyle>
        <Style TargetType="dg:DataGridCell">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ValueA, Converter={StaticResource MyConverterA}}"
                             Value="True">
                    <Setter Property="Background"
                            Value="LightYellow" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </dg:DataGridTextColumn.CellStyle>
</dg:DataGridTextColumn>
<dg:DataGridTextColumn Header="B"
                       Width="180"
                       Binding="{Binding B, StringFormat=N2}"
                       IsReadOnly="true"
                       FontWeight="Bold">
    <dg:DataGridTextColumn.CellStyle>
        <Style TargetType="dg:DataGridCell">
            <Style.Triggers>
                <DataTrigger Binding="{Binding MyVal, Converter={StaticResource MyConverterB}, **ConverterParameter=??**}"
                             Value="True">
                    <Setter Property="Background"
                            Value="Red" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </dg:DataGridTextColumn.CellStyle>
</dg:DataGridTextColumn>

I need to pass value of Column "A" as a parameter to MyConverterB, using ConverterParameter. Any pointers pleasse?

Thanks for your help.

Mohit S
  • 13,723
  • 6
  • 34
  • 69
Vineet v
  • 175
  • 2
  • 13
  • If you are looking for binding a `ConverterParameter`, it is not possible.[This SO](http://stackoverflow.com/questions/15309008/binding-converterparameter) shows an alternate approach. – Siva Gopal Nov 25 '15 at 06:32

1 Answers1

4

You can use MultiBinding instead of using ConverterParameter in that case.

<MultiBinding Converter="{StaticResource MyConverterB}">
    <Binding Path="A" />
    <Binding Path="B" />
</MultiBinding>

And create IMultiValueConverter for that.

public class MyConverterB : IMultiValueConverter
{
    public object Convert( object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture )
    {

    }

    public object[] ConvertBack( object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture )
    {

    }
}

Update

Or you can try to use MultiDataTrigger for changing colors. Maybe with some converters. Conditions working like logical AND.

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=ValueA}" Value="True" />
        <Condition Binding="{Binding Path=B}" Value="True" />
    </MultiDataTrigger.Conditions>
    <Setter Property="Background" Value="Red" />
</MultiDataTrigger>
bars222
  • 1,652
  • 3
  • 13
  • 14
  • Thanks for your response.But I also need to render a color to the column cell depending on the output from MyConverterB.How do I achieve this using Multibinding please? – Vineet v Nov 25 '15 at 06:55
  • I think you can try to use `MultiDataTrigger`. I've updated the answer. – bars222 Nov 25 '15 at 07:16