开发者

WPF Datagrid - How to validate multiple rows and mark all invalid ones?

I have a datagrid with rows where the validation depends on his siblings. So far I'm using BindingGroups and a custom 开发者_Python百科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!


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜