views:

600

answers:

1

Hi, I have a datagrid with rows where the validation depends on his siblings. So far I'm using BindingGroups and a custom ValidationRule to validate multiple rows a the same time. But I can't figure out how to change the appereance of the invalid row entries. I return a ValidationResult and my grid gets a red border but my style gets ignored.

My xaml style code so far:

    <Style TargetType="{x:Type dg:DataGridRow}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="BorderThickness" Value="10"/>
                    <Setter Property="BorderBrush" Value="Green"/>
                    <Setter Property="Background" Value="#F6B39E"/>
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

edit: maybe I should post a little more of my code at the moment I have this validation declaration:

 <dg:DataGrid.RowValidationRules>
      <viewModel:StreamGridValidationRules />
 </dg:DataGrid.RowValidationRules>

With this code my style above gets set correctly, but only one row gets validated at a time. As I need to validate all siblings and his parent aswell, I changed my code to this:

<dg:DataGrid.BindingGroup>
     <BindingGroup Name="BindingGroup">
         <BindingGroup.ValidationRules>
              <viewModel:StreamGridValidationRules />
          </BindingGroup.ValidationRules>
     </BindingGroup>
</dg:DataGrid.BindingGroup>

With this I get multiple items in the BindingGroup but my style gets ignored completly and the grid just gets the standard 1px red border.

Thanks beforehand for any tips and hints!

tS!

A: 

what happens if you remove the x:Key="RowStyle", does it work then?

forgive me if im being obvious, but not seeing the rest of your code, i cant tell. If you are naming a style it wont get used unless you are explicitly setting it to be used.

Aran Mulholland
I'm setting the RowStyle on the datagrid (RowStyle="{StaticResource RowStyle}), but your right, I can remove it on both sides.
TS