我正在开发一个窗口手机应用程序。其中我有一个列表框,模板的视图有一个时间字段。 我已将一个可观察的集合绑定到列表中。我的问题是我绑定到模板的时间应该随着计时器滴答而改变。我必须显示所有计时器运行。 当它通过可观察的集合绑定时,我该如何执行此操作。
我怎么能让它每秒都改变一次。将可观察集合通知每一秒都是一个好主意。或者任何想法都可以为我提供良好的建议。
答案 0 :(得分:0)
试试这个
XAML:
<ListBox x:Name="lstData">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Data1}" Margin="20"></TextBlock>
<TextBlock Text="{Binding Data2}" Margin="20"></TextBlock>
<TextBlock Text="{Binding Data3}" Margin="20"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
CS:
ObservableCollection<Data> obs = new ObservableCollection<Data>();
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
obs.Add(new Data("Start", "Time :", "0"));
lstData.ItemsSource = obs;
LoadTimer();
}
public void LoadTimer()
{
int sec = 0;
Timer timer = new Timer((obj) =>
{
Dispatcher pageDispatcher = obj as Dispatcher;
pageDispatcher.BeginInvoke(() =>
{
sec++;
obs[0] = new Data("Changing", "Time :", sec.ToString());
});
}, this.Dispatcher, 1000, 1000);
}
public class Data
{
public string Data1 { get; set; }
public string Data2 { get; set; }
public string Data3 { get; set; }
public Data() { }
public Data(string Data1, string Data2, string Data3)
{
this.Data1 = Data1;
this.Data2 = Data2;
this.Data3 = Data3;
}
}