2009-11-13 75 views
2

我有一個datagrid,其中的驗證取決於他的兄弟姐妹。到目前爲止,我使用BindingGroups和一個自定義的ValidationRule來同時驗證多行。但我無法弄清楚如何改變無效行條目的含義。我返回一個ValidationResult,並且我的網格獲得一個紅色邊框,但我的樣式被忽略。WPF Datagrid - 如何驗證多行並標記所有無效行?

我的XAML代碼風格至今:

<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> 

編輯:也許我應該張貼多一點我的代碼 此刻我有這個驗證聲明:

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

有了這個代碼我的上面的樣式得到正確設置,但一次只有一行得到驗證。當我需要驗證所有的兄弟姐妹和他的父母藏漢,我改變了我的代碼如下:

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

有了這個,我得到的BindingGroup多個項目,但我的風格被完全地忽略,電網只是得到標準1px的紅色邊境。

預先感謝任何提示和提示!

tS!

+0

您能否詳細說明您如何設置BindingGroup以及您在自定義ValidationRule中使用的機制來一次驗證多行?創建BindingGroup的XAML /代碼以及自定義ValidationRule的基本部分會很好。 – 2009-11-14 18:47:07

回答

0

如果你刪除了x:Key =「RowStyle」,會發生什麼情況呢?

原諒我,如果我是明顯的,但沒有看到你的代碼的其餘部分,我不能告訴。如果你命名了一種風格,它將不會被使用,除非你明確地設置它被使用。

+0

我在DataGrid上設置RowStyle(RowStyle =「{StaticResource RowStyle}),但是您的權利,我可以在兩側刪除它。 – 2009-11-15 13:53:40