当绑定在DataGridTextColumn中时,WPF / Xaml Datagrid不会触发ValidatesOnDataErros

时间:2012-11-07 17:22:28

标签: wpf xaml mvvm

我有一个数据网格,它绑定到我的viewmodel中的一个可观察集合。这一切都很好,并在数据网格中显示我的数据。

我现在需要做的是在用户输入文本时验证一些列。我正在使用IDataErrorInfo来执行此操作。

如果我执行以下操作: -

**<TextBox 
     Width="100" 
     Text="{Binding Path=CallCode,
     Mode=TwoWay,
     ValidatesOnDataErrors=True,
     UpdateSourceTrigger=PropertyChanged }"/>**

这在我的viewmodel中工作并触发验证代码,但是如果我将此代码添加到datagrid,如下所示它不会做任何事情!: -

<Border x:Name="body"                    
        DockPanel.Dock="Top"   
        Grid.Row="2" 
        Grid.Column="0">

        <!-- Results -->
        <DataGrid x:Name="Results"                            
            ItemsSource="{Binding CallCodesList}"
            AutoGenerateColumns="False"
            ScrollViewer.CanContentScroll="True"
            ScrollViewer.VerticalScrollBarVisibility="Auto"
            CanUserAddRows="False">

            <DataGrid.Columns >

            **<DataGridTextColumn                                                     
                     Header="Call Code" 
                     CanUserSort="True" 
                     Width="100" 
                     Binding="{Binding CallCode, 
                     ValidatesOnDataErrors=True,  
                     UpdateSourceTrigger=PropertyChanged />**

                 <DataGridCheckBoxColumn Width="70"
                        Binding="{Binding Path=HasSpeech}"
                        Header="Speech"
                        IsThreeState="True">
                    <DataGridCheckBoxColumn.ElementStyle>
                        <Style TargetType="CheckBox">
                            <Setter Property="IsChecked" Value="{Binding HasSpeech}" />
                        </Style>
                    </DataGridCheckBoxColumn.ElementStyle>
                </DataGridCheckBoxColumn>          
        </DataGrid>
    </Border>

是否有某些东西我缺失或者它看不到东西,因为它在数据网格中,这是全新的,所以目前卡住了:(

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

它认为代码很好,我不知道wpftoolkit的数据网格是否允许IDataErrorInfo验证,但在本文(Validation in WPF Toolkit’s DataGrid)中,您可以看到在wpftoolkit的数据网格上使用验证的一个很好的例子,但使用IDataError接口方式。 我希望这对你有帮助......