Флажок WinUI для первого элемента в ListView не отражает изменения связанных свойств при синхронизации с серверомC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Флажок WinUI для первого элемента в ListView не отражает изменения связанных свойств при синхронизации с сервером

Сообщение Anonymous »

Описание:
Я столкнулся со странным поведением в моем приложении WinUI 3, когда ListView отображает коллекцию элементов. CheckBox в каждом шаблоне элемента привязан к логическому свойству IsComplete. Это многоклиентное приложение, синхронизируемое с сервером, в котором изменения данных могут происходить от разных клиентов и синхронизироваться через сервер.

Подробнее:

  • Когда я устанавливаю или снимаю флажок с флажка CheckBox для любого элемента в приложении WinUI, он работает правильно и обновляет свойство IsComplete, как и ожидалось.
  • Когда в элементы вносятся изменения в другом клиенте, и эти изменения синхронизируются с сервером, а затем переносятся в это приложение WinUI, все элементы правильно отражают обновления как в привязанной коллекции, так и в пользовательском интерфейсе, за исключением первого элемента в ListView.
  • CheckBox и TextBlock первого элемента визуально не обновляются в соответствии с новым значением IsComplete после синхронизации с сервером, даже если привязанные данные были обновлены правильно (проверено на этапе отладки).
Соответствующий код

Код: Выделить всё

[*]    Grid.Row="1"
Margin="10"
ItemsSource="{x:Bind ViewModel.Items}"
ScrollViewer.VerticalScrollBarVisibility="Auto">










Код: Выделить всё

[RelayCommand]
public async Task RefreshItemsAsync(CancellationToken cancellationToken = default)
{
try
{
IsRefreshing = true;

// Synchronize data with the remote service (if any).
await service.SynchronizeAsync(cancellationToken);

// Pull all items from the database.
IEnumerable itemsFromDatabase = await service.TodoItems.OrderBy(item => item.Id).ToListAsync(cancellationToken);

// Replace all the items in the collection.
Items.ReplaceAll(itemsFromDatabase);
//Items.Clear();
//_ = Items.AddRange(itemsFromDatabase);
}
catch (Exception ex)
{
NotificationHandler?.Invoke(this, new NotificationEventArgs(ex.GetType().Name, ex.Message, true));
}
finally
{
IsRefreshing = false;
NotificationHandler?.Invoke(this, new NotificationEventArgs("Items Refreshed", "", false));
}
}
Наблюдаемое поведение

Нажатие флажка непосредственно в пользовательском интерфейсе обновляет IsComplete и правильно отражает изменения.
[*]Когда другой клиент изменяет первый элемент и синхронизирует изменения, и эти изменения переносятся в приложение WinUI, связанное свойство IsComplete корректно обновляется для первого элемента (проверяется с помощью TextBlock), но флажок CheckBox визуальный состояние не отражает это изменение.
[*]Все остальные элементы в списке ведут себя должным образом, как при непосредственном изменении в пользовательском интерфейсе, так и при обновлении при синхронизации с сервером.


Подробнее здесь: https://stackoverflow.com/questions/792 ... ty-changes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»