Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
70
applying style DataRecordCellArea dynamically
posted

I have a list of objects implementing INotifyPropertyChange bound to a Grid (particularly CSLA objects).  One of the properties is called IsValid and responds true if there is any error on the object.

 I've applied the following style

<Style TargetType="{x:Type igDP:DataRecordCellArea}">

<Style.Triggers>

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Record.DataItem.IsValid, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Value="False">

<Setter Property="Background" Value="Red" />

<Setter Property="FontWeight" Value="Bold" />

</DataTrigger>

<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Record.DataItem.IsValid}" Value="True">

<Setter Property="Background" Value="Green" />

</DataTrigger>

</Style.Triggers>

</Style>

 I also have a textbox outside of the grid bound to a field of the active record.  When I put invalid data in this field, I can see the grid update with the same info, but it doesn't trigger the red background.  If I scroll the record out of view and back into view, it then displays a red background.  How do I set it up to display the red background when the data becomes invalid?

 

Parents Reply
  • 3627
    Verified Answer
    posted in reply to Todd

    Strangely, I tried to post a response to this, along with a working sample and got a "moderated forum" message - something I had never seen here before. What you are trying to do is quite simple. Maybe my other message will appear tomorrow? In the meantime, here is the xaml portion that should demonstrate the idea:

     

    <Window x:Class="XamDataGrid_Test_of_Dynamic_Style.Window1"
        xmlns="
    http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:igDP="http://infragistics.com/DataPresenter"
        xmlns:local="XamDataGrid_Test_of_Dynamic_Style"
        Title="Window1" Height="300" Width="300">
        <Grid>
           
             <Grid.Resources>
                <Style x:Key="ManagerStyle" TargetType="{x:Type igDP:CellValuePresenter}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=(igDP:DataRecord.DataItem).IsManager}" Value="True">
                            <Setter Property="Background" Value="Red" />
                        </DataTrigger>
                    </Style.Triggers>
                   
                </Style>
            </Grid.Resources>

            <StackPanel Orientation="Vertical">

                <Button Name="ToggleManager" Click="ToggleManager_Click" Margin="20">Toggle Manager</Button>

                <igDP:XamDataGrid Name="TestGrid" AutoFit="True" GroupByAreaLocation="None">

                    <igDP:XamDataGrid.FieldLayouts>
                        <igDP:FieldLayout>

                            <igDP:FieldLayout.Fields>
                                <igDP:Field Name="Name">
                                    <igDP:Field.Settings>
                                        <igDP:FieldSettings CellValuePresenterStyle="{StaticResource ManagerStyle}" />
                                    </igDP:Field.Settings>
                                </igDP:Field>

                                <igDP:Field Name="IsManager" />
                            </igDP:FieldLayout.Fields>

                            <igDP:FieldLayout.SortedFields>
                                <igDP:FieldSortDescription FieldName="Name"
                                                       Direction="Ascending"
                                                       IsGroupBy="False" />
                            </igDP:FieldLayout.SortedFields>
                           
                        </igDP:FieldLayout>
                    </igDP:XamDataGrid.FieldLayouts>

                </igDP:XamDataGrid>

            </StackPanel>

        </Grid>
    </Window>

Children