2

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

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

如果我执行以下操作:-

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

这有效并触发了我的视图模型中的验证代码,但是如果我将此代码添加到数据网格中,如下所示,它不会做任何事情!:-

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

有什么我遗漏的东西还是因为它在数据网格中而看不到某些东西,这是全新的,所以目前卡住了:(

对此的任何帮助都会很棒。

4

1 回答 1

0

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

于 2012-11-07T20:27:26.513 回答