Я использую ObservableCollection
, определенный в классах MainWindow простого приложения WPF. По какой-то причине обновление списка (я вижу это при отладке), однако пользовательский интерфейс не обновляется.DataBinding для DataGrid не работает?
Теперь, если я создаю Timer
и закольчу его, я могу обновить DataGrid
, установив ItemSource
. Это работает, но вызывает ужасное мерцание в моем DataGrid.
public ObservableCollection<CalculatedData> calculatedData { get; set; }
Далее в мой код я использую эту строку для фактического обновления или добавления данных в список.
calculatedData = await CalculateData();
CalculateData
функция определяется следующим образом:
private Task<ObservableCollection<CalculatedData>> CalculateData()
{
return Task.Run(() =>
{
ObservableCollection<CalculatedData> cdList = new ObservableCollection<CalculatedData>();
// Do a lot of stuff
return cdList;
});
}
Для моего xaml
У меня есть простой DataGrid, как показано ниже:
<DataGrid Name="dataGrid" ItemsSource="{Binding calculatedData}" IsReadOnly="True" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" AutoGeneratingColumn="dataGrid_AutoGeneratingColumn" />
Вопрос: Почему не DataGrid быть взломанным? Будет ли это исправлять мою мерцающую проблему, поскольку я не перевязываю?
-
UPDATE
Я даже изменил свое основное заявление на следующее (с Iv'e видел, как это делается таким образом), но я до сих пор не получил его на работу.
private ObservableCollection<CalculatedData> calculatedData = new ObservableCollection<CalculatedData>();
public ObservableCollection<CalculatedData> CalculatedData
{
get { return calculatedData; }
set
{
calculatedData = value;
}
}
XAML:
<DataGrid Name="dataGrid" ItemsSource="{Binding CalculatedData}" IsReadOnly="True" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" AutoGeneratingColumn="dataGrid_AutoGeneratingColumn" />
Что происходит в "dataGrid_AutoGeneratingColumn"? – Sajeetharan
@Sajeetharan хороший вопрос! Я удаляю определенный столбец и просто переименовываю другие заголовки столбцов. Итак, ничего необычного. –