我想運行時間讓我們說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