Я работал с datagridview и связывал его источник с BindingList. У меня проблема с обновлением значения столбца таймера решетки. Каждый раз, когда я изменяю значение таймера, сетка данных не обновляется. Я уже попробовал много решений, и я придумал следующий код, но все равно ничего хорошего:
Вот мой XAML:
<DataGrid ItemsSource="{Binding MyList}">
<DataGridTextColumn Header="Timer" Binding="{Binding Path=Countdown, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid>
Вот мой класс:
public class MyClass
{
public string Countdown {get;set;}
}
Вот моя ViewModel:
public class MyViewModel
{
private BindingList<MyClass> _myList;
public BindingList<MyClass> MyList
{
get { return _myList; }
set
{
_myList= value;
NotifyOfPropertyChange(() => MyList); //I am using Caliburn's Screen
}
}
}
Вот как я изменил свойство:
void OnButtonClick()
{
var fireAndForget = Task.Run(async () =>
{
int currentRowIndex = 0;
for (int i = 30; i > 0; i--)
{
MyList[currentRowIndex].CountDown = i.ToString();
MyList.ResetBindings();
await Task.Delay(1000);
}
}
}
Это отображает только 30 в столбце таймера и не обновляется.
Я такжепопытался использовать TrulyObservableCollection и FullyObservableCollection, оба не годятся. Я также попытался изменить весь MyList, создав localMyList и выполнив MyList = localMyList
, но все еще не обновляя