我对 WPF 专家有一个非常简单的问题。
我从 XAML 代码开始:
<ListView Name="ListViewRunner" ItemsSource="{Binding Path=CurrentPrices}" >
<GridView>
<!-- Many GridViewColumn that display values -->
<GridViewColumn Header="Chart" Width="70" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Name="btnDisplayChart" Content="Chart"
Click="DisplayChart_Click"
Tag="{Binding ID}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</Listview>
CurrentPrices 是一个异步 ObservableCollection 并且一个单独的线程每 200 毫秒更新一次其他列。现在,当我单击上面定义的按钮时,似乎没有发生任何事情(就像我没有单击按钮一样),但是如果我增加另一个线程的睡眠时间(即 2000 毫秒),则后面的代码会正确处理事件。
你能指出我正确的方向吗?
这是更新集合的代码
private void getRemotePrices(){
while(update)
{
lock (boccaciccio)
{
MarketPrices marketprices = bf.GetMarketPrices(market.ID);
market.UpdateMarketPrices(marketprices);
lastPrices.Clear();
foreach (var runnerprice in market.ADATA)
{
lastPrices.Add(runnerprice);
}
notifyObservers(lastPrices); //updates every subscriber
Thread.Sleep(200);
}
}
}