我想运行时间让我们说5个城市,就像列表视图和时钟(本地时间)的每个单元格中除城市名称外的所有城市一样。 (屏幕截图如下)如何在Xamarin表单中分别运行ListView的所有项目中的StartTimer
我正在使用该城市的偏移值获取城市的当地时间。
而对于时钟移动,我使用了StartTimer,以便时间每秒都会改变。
目前我在那里得到offsetValue为零,因此所有城市的UTC时间都相同。
我希望当地时间显示在城市名称旁边的所有城市,时钟必须每隔一秒移动一次。
任何帮助将不胜感激。 在此先感谢。
Sample screenshot of cities with respective clocks
List<OffsetItems> items = new List<OffsetItems>();
items.Add(new OffsetItems() { CityName = "Hyderabad", Offset = 5.5 });
items.Add(new OffsetItems() { CityName = "London", Offset = 1 });
items.Add(new OffsetItems() { CityName = "Tokyo", Offset = 9 });
items.Add(new OffsetItems() { CityName = "New York", Offset = -5 });
items.Add(new OffsetItems() { CityName = "Dubai", Offset = 4 });
ListView lv = new ListView
{
SeparatorVisibility = SeparatorVisibility.None,
ItemsSource = items,
ItemTemplate = new DataTemplate(() =>
{
Label cityL = new Label()
{
TextColor = Color.Black,
HorizontalTextAlignment = TextAlignment.Start,
FontSize = Device.GetNamedSize(NamedSize.Small, new Label())
};
Label timeL = new Label()
{
TextColor = Color.Black,
HorizontalTextAlignment = TextAlignment.Center,
FontSize = Device.GetNamedSize(NamedSize.Small, new Label())
};
cityL.SetBinding<OffsetItems>(Label.TextProperty, indexer => indexer.CityName);
Label ll = new Label();
Device.StartTimer(TimeSpan.FromSeconds(1),() => {
ll.SetBinding<OffsetItems>(Label.TextProperty, indexer => indexer.Offset);
double offsetValue = Convert.ToDouble(ll.Text);
timeL.Text = DateTime.UtcNow.AddHours(offsetValue).ToString("hh:mm:ss tt, ddd dd-MMM-yyyy");
return true;
});
return new ViewCell
{
View = new StackLayout
{
Orientation = StackOrientation.Horizontal,
Children =
{
cityL,
timeL
}
}
};
})
};
Content = new StackLayout
{
Children = {
lv
}
};
感谢您的代码@Dinesh Kumar。 – user5598997