Обновление данных в ListView

Обновление данных в ListView
Atom
9/12/2017
Simen


Подскажите пожалуйста как правильно использовать GuiAsync().
Есть WPF-приложение с таблицей ListView, которая привязана к переменной aaa.
При нажатии на кнопку происходит добавление элемента в переменную ааа. В памяти при отладке я его вижу, но в таблицу он не добавляется.
Как правильно обновить таблицу, чтобы в ней появился новый элемент?
Code

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());
}




Thanks:


1 2  >
Support

Avatar
Date: 9/12/2017
Reply


Code
this.GuiAsync(() => aaa.Add(curBond));
Thanks:

Simen

Avatar
Date: 9/12/2017
Reply


Так тоже не работает.
Нажимаю на кнопку "Test" и ничего не происходит.

Полный код проекта:


Полный код XAML:


Прикрепляю архив с проектом на всякий случай
GuiAsyncTest.7z 5 KB (269)
Thanks:

Support

Avatar
Date: 9/12/2017
Reply


Вы не сделали связку между коллекций и контролом. aaaGrid.ItemsSource
Thanks:

Simen

Avatar
Date: 9/12/2017
Reply


Ну вот же связка, если я правильно понимаю:
Code
<ListView Grid.Row="1" ItemsSource="{Binding aaa}" Name="aaaGrid" Margin="5,5,5,5">


Или речь идет о какой-то другой связке?

Thanks:

Support

Avatar
Date: 9/13/2017
Reply


Simen
Ну вот же связка, если я правильно понимаю:
Code
<ListView Grid.Row="1" ItemsSource="{Binding aaa}" Name="aaaGrid" Margin="5,5,5,5">


Или речь идет о какой-то другой связке?



Попробуйте это сделать в конструкторе окна.
Thanks:

Support

Avatar
Date: 9/13/2017
Reply


Simen
Ну вот же связка, если я правильно понимаю:
Code
<ListView Grid.Row="1" ItemsSource="{Binding aaa}" Name="aaaGrid" Margin="5,5,5,5">


Или речь идет о какой-то другой связке?



Попробуйте это сделать в конструкторе окна.
Thanks:

Simen

Avatar
Date: 9/13/2017
Reply


Я не понимаю, что это значит:
Quote:
Попробуйте это сделать в конструкторе окна.


А вы в конструкторе сделали связку? У вас заработал пример после этого?

И, может быть, дело не в связке, а в неправильном использовании this.GuiAsync() ?
Thanks:

Support

Avatar
Date: 9/13/2017
Reply


Simen
Я не понимаю, что это значит:
Quote:
Попробуйте это сделать в конструкторе окна.


Напишите код с инициализацией ItemsSource на C# в конструкторе MainWindow.
Thanks:

Simen

Avatar
Date: 9/13/2017
Reply


Спасибо за наводку.
Добавил инициализацию так:

Code
public MainWindow()
{
InitializeComponent();
aaaGrid.ItemsSource = aaa;
}

Но таблица все равно не обновляется, к сожалению. [crying]
Thanks:

Support

Avatar
Date: 9/13/2017
Reply


Да, дело было в другом. Поменяйте ваш класс на

Code
public class aaaClass
{
public decimal lastPrice { get; set; }
public decimal bestAskPrice { get; set; }
}
Thanks: Simen
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy