Как обновить элемент в UWP ListView с помощью источника AdvancedCollectionViewC#

Место общения программистов C#
Ответить
Anonymous
 Как обновить элемент в UWP ListView с помощью источника AdvancedCollectionView

Сообщение Anonymous »

Я использую AdvanceCollectionView из Windows Community Toolkit в качестве источника для XAML ListView, чтобы обеспечить сортировку и фильтрацию. У меня возникли проблемы с обновлением ListView.
Чтобы воспроизвести эту проблему, я создал простой класс Person. В MainPage XAML у меня есть ListView MyXAMLList и кнопка EditButton. В коде MainPage у меня есть ObservableCollection
MyPersonList и AdvancedCollectionView MyPersonACV. В событии Page_Loaded я добавляю человека в список и использую AdvancedCollectionView в качестве источника для представления списка:
Person p = new Person
{
Name = "John",
Age = 35
};

MyPersonList.Add(p);
MyPersonACV = new AdvancedCollectionView(MyPersonList, true);
MyXAMLList.ItemsSource = MyPersonACV;

Это работает, и я вижу Джона в списке.
В коде EditButton я пытаюсь обновить элемент в списке. но это не работает. И ObservableCollection, и AdvancedCollectionView обновляются, но в списке XAML по-прежнему отображается старое имя «Джон» вместо «Мэри».
MyPersonList[0].Name = "Mary";

Debug.WriteLine(MyPersonList[0].ToString());
Debug.WriteLine(MyPersonACV[0].ToString());


Вместо этого я попробовал обновить MyXAMLList.SelectedItem, но результат тот же:
Person p = (Person)MyXAMLList.SelectedItem;
p.Name = "Mary";

Я также пробовал добавить MyPersonACV.Refresh();, но не помогло.
Что я делаю не так? Как обновить элемент в списке?
Полный код ниже
Класс Person:class Person
{
public string Name {get; set;}
public int Age { get; set; }
public override string ToString()
{
return Name;
}
}

XAML главной страницы:

x:Class="App3.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006 ... esentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App3"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/marku ... ility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
Loaded="Page_Loaded">











MainPage cs:
using Microsoft.Toolkit.Uwp.UI;
using System.Collections.ObjectModel;
using System.Diagnostics;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace App3
{

public sealed partial class MainPage : Page
{

private ObservableCollection MyPersonList = new ObservableCollection();
private AdvancedCollectionView MyPersonACV;

public MainPage()
{
this.InitializeComponent();
}

private void EditButton_Click(object sender, RoutedEventArgs e)
{

//Change name
MyPersonList[0].Name = "Mary";
//Person p = (Person)MyXAMLList.SelectedItem;
//p.Name = "Mary";

Debug.WriteLine(MyPersonList[0].ToString());
Debug.WriteLine(MyPersonACV[0].ToString());

//MyPersonACV.Refresh();

}

private void Page_Loaded(object sender, RoutedEventArgs e)
{
//create person
Person p = new Person
{
Name = "John",
Age = 35
};
//add to list
MyPersonList.Add(p);

//set up ListView source
MyPersonACV = new AdvancedCollectionView(MyPersonList, true);
MyXAMLList.ItemsSource = MyPersonACV;
}

}
}


Подробнее здесь: https://stackoverflow.com/questions/626 ... iew-source
Ответить

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

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

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

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

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