Подскажите пожалуйста как правильно использовать GuiAsync(). Есть WPF-приложение с таблицей ListView, которая привязана к переменной aaa. При нажатии на кнопку происходит добавление элемента в переменную ааа. В памяти при отладке я его вижу, но в таблицу он не добавляется. Как правильно обновить таблицу, чтобы в ней появился новый элемент?
public class aaaClass
{
public decimal lastPrice;
public decimal bestAskPrice;
public decimal fallPercent;
}
public ObservableCollection<aaaClass> aaa = new ObservableCollection<aaaClass>();
...
private void TestClick(object sender, RoutedEventArgs e)
{
var curBond = new aaaClass
{
lastPrice = 100m,
bestAskPrice = 95m,
};
aaa.Add(curBond);
this.GuiAsync(() => aaaGrid.Items.Refresh());
}
コメント (11)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Так тоже не работает. Нажимаю на кнопку "Test" и ничего не происходит.
Полный код проекта:
using System.Collections.ObjectModel; using System.Windows; using Ecng.Xaml;
namespace GuiAsyncTest { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public class aaaClass { public decimal lastPrice; public decimal bestAskPrice; }
}
Полный код XAML:
<Window x:Class="GuiAsyncTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:GuiAsyncTest" mc:Ignorable="d"
</Window>
Прикрепляю архив с проектом на всякий случай
Вы не сделали связку между коллекций и контролом. aaaGrid.ItemsSource
Ну вот же связка, если я правильно понимаю:
Или речь идет о какой-то другой связке?
Попробуйте это сделать в конструкторе окна.
Попробуйте это сделать в конструкторе окна.
Я не понимаю, что это значит:
А вы в конструкторе сделали связку? У вас заработал пример после этого?
И, может быть, дело не в связке, а в неправильном использовании this.GuiAsync() ?
Я не понимаю, что это значит:
Напишите код с инициализацией ItemsSource на C# в конструкторе MainWindow.
Спасибо за наводку. Добавил инициализацию так:
Но таблица все равно не обновляется, к сожалению. 😭
Да, дело было в другом. Поменяйте ваш класс на
Заработало! Спасибо!