C# 在DevExpress DXGrid中使用自定义单元格编辑器时,如何验证单元格?

C# 在DevExpress DXGrid中使用自定义单元格编辑器时,如何验证单元格?,c#,wpf,devexpress,C#,Wpf,Devexpress,我有一个DXGrid,我有一个这样定义的列 <dxg:GridColumn FieldName="InvType.TypeName" Validate="TypeName_OnValidate" > <dxg:GridColumn.EditTemplate> <ControlTemplate> <dxe:ComboBoxE

我有一个DXGrid,我有一个这样定义的列

       <dxg:GridColumn FieldName="InvType.TypeName" Validate="TypeName_OnValidate" >
                <dxg:GridColumn.EditTemplate>
                    <ControlTemplate>
                        <dxe:ComboBoxEdit x:Name="PART_Editor" AutoComplete="True"
                                          ItemsSource="{Binding DataContext.InvTypes, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=dxg:GridControl}}"
                                          DisplayMember="TypeName" Validate="BaseEdit_OnValidate"/>
                    </ControlTemplate>
                </dxg:GridColumn.EditTemplate>
            </dxg:GridColumn>

每行显示InvType的一个实例,网格不允许在此列中进行编辑,除非它是新行项目

简而言之,我希望单元格在编辑时显示ComboBox编辑,然后处理GridColumn验证事件

问题是GridColumn上的Validate事件没有激发。ComboBoxEdit上的Validate事件会触发,但这只提供ValidationEventArgs,而不是我需要的GridCellValidationEventArgs

是否有任何方法可以在编辑时使用组合框并正确触发GridColumn事件

编辑: 我通过使用EditSettings而不是ContentControl解决了这个问题

      <dxg:GridColumn FieldName="InvType.TypeName" Validate="TypeName_OnValidate">
                <dxg:GridColumn.EditSettings>
                    <dxe:ComboBoxEditSettings AutoComplete="True"
                                          ItemsSource="{Binding DataContext.InvTypes, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=dxg:GridControl}}"
                                          DisplayMember="TypeName" ValueMember="TypeName"/>
                </dxg:GridColumn.EditSettings>
            </dxg:GridColumn>

我也做过类似的工作。 本质上,您可以创建一个带有ValidationsAttached属性的实用程序类(它接受您的datacolumn,并附加处理程序来验证事件)

用法如下:

<Grid:GridColumn  x:Name="EventEndTimeColumn"
Header="Time" Width="40" AllowEditing="True" EditSettings="{dxe:TextSettings HorizontalContentAlignment=Center}" HorizontalHeaderContentAlignment="Center">
   <Validator:GridColumnValidationRulesHelper.ValidationRules>
      <Validator:GridColumnValidationRules>
           <Validator:CustomValidationRule  ErrorMessage="Invalid Value"/>
      </Validator:GridColumnValidationRules>
   </Validator:GridColumnValidationRulesHelper.ValidationRules>

您可以在my中获得验证帮助程序代码