WPF DataGrid - Рекомендации по валидации - PullRequest
1 голос
/ 21 мая 2010

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

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

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

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

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

<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 Ответ

1 голос
/ 30 января 2013

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

ValidatesOnDataErrors="True" NotifyOnValidationError="True"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...