我编写如下代码:在构造函数
中newTimer = new DispatcherTimer();
newTimer.Interval = TimeSpan.FromSeconds(1);
newTimer.Tick += OnTimerTick;
newTimer.Start();
private void OnTimerTick(object sender, EventArgs e) {
SecondsToGo--;
if (SecondsToGo == 0) {
change();
SecondsToGo= 3;
}
Timein.Text = SecondsToGo.ToString();
}
改变功能
public void change() {
c = new List<TokenList>();
for (int i =0;i<10 ;i++)
{
c.Add(new TokenList("hello", "Hi"));
}
this.Dispatcher.BeginInvoke(new Action(()=>{
longlistselector.ItemsSource.Clear();
longlistselector.ItemsSource = c;
}));
}
长列表选择器项仍然是旧值。我该如何更新这些值?
答案 0 :(得分:0)
DispatcherTimer
调用Tick
方法(假设您是从UI调度程序创建了它的对象)。您不需要将其放在UI调度程序上。在没有调度员的情况下试用您的代码。
public void change()
{
for (int i =0;i<10 ;i++)
{
c.Add(new TokenList("hello", "Hi"));
}
longlistselector.ItemsSource.Clear();
longlistselector.ItemsSource = c;
}
答案 1 :(得分:0)
我的猜测是,您每次都会重复使用c
的相同实例。如果我没记错的话,LongListSelector的ItemsSource
属性会使用一个优化来阻止你重新分配一个对象的同一个实例(更不用说你对Clear()
的调用了,这显然是假的) 。使用ObservableCollection并仅将其分配给ItemsSource,或者每次都创建c
的新实例