Когда я выбираю (щелкая или с помощью клавиатуры) пустую строку в моей DataGrid (когда я хочу добавить новую строку), возникает непредвиденная ошибка проверки (но без исключения) - граница сетки данных меняется на красный цвет, так как выможно увидеть на изображении ниже.Когда я нажимаю второй раз на пустой строке, красная рамка исчезает.Все остальное работает нормально, добавлен новый ряд.Кроме того, у меня нет никаких правил проверки.И когда я создаю строку с пустым текстом, значение допустимо.
Мне не нужно это поведение и эту красную рамку, кто-нибудь знает, почему это происходит и как это исправить?Почему и где происходит сбой проверки?
Ниже я добавляю некоторый исходный код:
Определение DataGrid в xaml:
<DataGrid IsSynchronizedWithCurrentItem="True" DisplayMemberPath="Name"
ItemsSource="{Binding Path=ConfigFiles}" SelectedItem="{Binding Path=SelectedConfigFile}"
Grid.Column="1" Height="87" Margin="0,26,11,32" Style="{DynamicResource DataGridStyle}">
<DataGrid.Columns>
<DataGridTextColumn Width="1*" Binding="{Binding Name}" />
</DataGrid.Columns>
</DataGrid>
MyЧасть ViewModel:
public class ManageModulesVM : BaseVM // Implements INotifyPropertyChanged
{
// ...
public ObservableCollection<ConfigFile> ConfigFiles
{
get { return selectedModule == null ? null : selectedModule.ConfigFiles; }
set
{
selectedModule.ConfigFiles = value;
OnPropertyChanged(() => ConfigFiles);
}
}
public ConfigFile SelectedConfigFile
{
get { return selectedModule == null ? null : selectedModule.SelectedConfigFile; }
set
{
if (value != null)
{
selectedModule.SelectedConfigFile = value;
}
OnPropertyChanged(() => SelectedConfigFile);
OnPropertyChanged(() => Parameters);
}
}
// ...
}
Класс ConfigFile:
public class ConfigFile
{
public string Name { get; set; }
public IList<Parameter> Parameters { get; set; }
public ConfigFile() { Name = ""; Parameters = new List<Parameter>(); }
}
Редактировать: После дальнейшего изучения я знаю, что привязка SelectedItem вызывает проблемы (когда я удаляю эту привязку, ошибка проверки перестает появляться), но я до сих пор не знаю, почему и как это исправить.