Я использую 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
Как обновить элемент в UWP ListView с помощью источника AdvancedCollectionView ⇐ C#
Место общения программистов C#
1735417063
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();, но не помогло.
Что я делаю не так? Как обновить элемент в списке?
[b]Полный код ниже[/b]
Класс 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/xaml/presentation"
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/markup-compatibility/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;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/62686536/how-to-update-item-in-uwp-listview-with-advancedcollectionview-source[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия