2010-05-21 2 views
1

Мы внедряем бизнес-приложение WPF с использованием MVVM. В настоящее время мы пытаемся определить лучший способ показать ошибки проверки для DataGrids. В настоящее время мы пытаемся сделать так, как это:WPF DataGrid - рекомендации по валидации

1) Глазами пользовательский элемент управления содержит DataGrid, связанный с EntityCollection от Entity Framework объектов, расположенных в соответствующем ViewModel

2) ViewModel implments интерфейс IDataErrorInfo. В ViewModel есть нормальные свойства, включая свойство для реализации IDataErrorInfo.Item

3) имущества, которое реализует IDataErrorInfo.Item называет проверки от базовой модели, чтобы определить, есть ли какие-либо проверка выдает

это работает отлично подходит для любого текстового поля или combobox в представлении - validatiosn обрабатывается, как ожидалось. Но с datagrid мы в тупике - независимо от того, что мы пробовали, проверка не произойдет. В настоящее время это определяется следующим образом:

<DataGrid x:Name="dgWikiNames" ItemsSource="{Binding Wiki_Names, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnSourceUpdated=True}" AutoGenerateColumns="False"> 
         <DataGrid.RowValidationRules> 
          <DataErrorValidationRule ValidationStep="UpdatedValue"/>        
         </DataGrid.RowValidationRules> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="First Name"> 
           <DataGridTextColumn.Binding> 
            <Binding Path="First_Name" ValidatesOnDataErrors="True"> 
             <Binding.ValidationRules> 
              <DataErrorValidationRule/> 
              <!--<local:CellDataInfoValidationRule ValidationStep="UpdatedValue"/>--> 
             </Binding.ValidationRules> 
            </Binding> 
           </DataGridTextColumn.Binding> 
          </DataGridTextColumn> 
          <DataGridTextColumn Header="Is Primary" Binding="{Binding Primary_Flag}"/> 
         </DataGrid.Columns> 
        </DataGrid> 

Если у кого есть какие-либо указания или рекомендации, мы будем благодарны. Благодаря

ответ

1

Добавьте следующие строки в связывании:

ValidatesOnDataErrors="True" NotifyOnValidationError="True" 
Смежные вопросы