C# WPF после обновления студии MVS, начал глючит DataGrid

184
21 марта 2019, 12:10

Обновил студию Microsoft Visual Studio и DataGrid в WPF приложении стало абсолютно неадекватно себя вести:

View

<DataGrid
    AutoGenerateColumns="False"
    SelectionMode="Single"
    CanUserAddRows="False"     
    SelectedItem="{Binding Path=Config, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"      
    ItemsSource="{Binding EventsList}">


Соответственно ViewModel:

    public ICollectionView EventsList { set; get; }  
...  
    EventsList = CollectionViewSource.GetDefaultView(ConfigData);  
Где  
        public ObservableCollection<Config> ConfigData { get; set; }  


Собственно сама проблема. При загрузке списка DataGrid выводит строки абсолютно рандомно. Дублирует названия, однако содержимое выделенной строки верное и при выделении происходит корректная выборка. Если после загрузки таблицы сделать EventsList.Refresh();, то отображение таблицы будет уже корректно, но только в пределах видимой части таблицы. Так же если в строку таблицу вставить ComboBox, то поведение таблицы становится ещё хуже.

 <!-- Group -->
                        <DataGridTemplateColumn 
                                Header="Группа" 
                                Width="100" 
                                MinWidth="100"
                                SortMemberPath="Group"
                                Visibility="{Binding                                        
                                    Data.IsGrouping,                                        
                                    Source={StaticResource proxy},
                                    Converter={StaticResource BooleanToVisibilityConverter}}"
                                >
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox 
                                            IsEditable="True"
                                            ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.AvailableGroups}"
                                            SelectedItem="{Binding Path=Group, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                            Text="{Binding Path=Group, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
                                            >
                                    </ComboBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn> 

При попытке назначить группу выделенной строке все ComboBox таблицы начинают повторять за текущим, при этом если опять-таки обновить таблицу, то ComboBox будет уже показывать корректное значение, но снова в пределах видимой части таблицы.

UPD. Такое же не корректное поведение оказалось и у CheckBox. При выделении CheckBoxa у таблицы также выделяются все CheckBox`ы которые якобы продублировались. Обновление списка показывает что это не так. Это всё работало правильно до обновления студии.

UPD. Вопрос решён. Оказалось, что некорректно работали методы переопределения у модели Config

public static bool operator ==(Config с1, Config с2) {..}
public static bool operator !=(Config с1, Config с2) {..}
public override bool Equals(object obj) { ... } 
public override int GetHashCode() { ... }
READ ALSO
C# ASP.NET Core Identity регистрация в DI UserManager, RoleManager без вызова AddIdentity

C# ASP.NET Core Identity регистрация в DI UserManager, RoleManager без вызова AddIdentity

Есть отдельный WebApi проект над базой данных пользователей "UserDbWebApi", которую использует проект для авторизации на IdentityServer4 "IdentityServerApi_AspNetIdentity"

154
Проверка прокручен ли скролл richTextBox до конца

Проверка прокручен ли скролл richTextBox до конца

Моя задача такова, когда пользователь прокрутит скролл до конца текста выполняется нужный мне кодНо сколько не искал, не смог найти способа...

155
Не работает функция отсчета таймера

Не работает функция отсчета таймера

Мне нужно в 2 lebl'а парсить минуты и секунды соответсвенноВот функция которую я сделал:

162
Как получить Id у User.Identity.Name?

Как получить Id у User.Identity.Name?

Собственно вопрос в заголовке

161