1
我正在嘗試爲Windows Phone 7編程某種秒錶。爲了衡量經過的時間,我使用了Stopwatch類。要打印輸出,我使用文本塊。但我希望textblock始終顯示已用時間。Windows Phone 7永久更新文本塊
Unitl現在我只能更新事件上的文本塊(我使用button_Click事件) 我嘗試了一段時間(真)循環,但這隻凍結了手機。
有沒有人有關我如何解決這個問題的好主意?
我正在嘗試爲Windows Phone 7編程某種秒錶。爲了衡量經過的時間,我使用了Stopwatch類。要打印輸出,我使用文本塊。但我希望textblock始終顯示已用時間。Windows Phone 7永久更新文本塊
Unitl現在我只能更新事件上的文本塊(我使用button_Click事件) 我嘗試了一段時間(真)循環,但這隻凍結了手機。
有沒有人有關我如何解決這個問題的好主意?
StopWatch
類沒有任何事件,因此如果要綁定,則必須編寫自己的類或使用計時器輪詢StopWatch。 您可以使用綁定將TextBlock的屬性綁定到秒錶。首先將此DataContext綁定添加到您的頁面xaml。
<phone:PhoneApplicationPage
DataContext="{Binding RelativeSource={RelativeSource Self}}" >
然後結合你的文字塊像這樣
<TextBlock x:Name="myTextBlock" Text="{Binding StopwatchTime}" />
,並在後面的代碼,添加DependancyProperty和必要的計時器代碼。
public static readonly DependencyProperty StopwatchTimeProperty =
DependencyProperty.Register("StopwatchTime", typeof(string), typeof(MainPage), new PropertyMetadata(string.Empty));
public string StopwatchTime
{
get { return (string)GetValue(StopwatchTimeProperty); }
set { SetValue(StopwatchTimeProperty, value); }
}
和地方定時器代碼...
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(0.2); // customize update interval
timer.Tick += delegate(object sender, EventArgs e)
{
StopwatchTime = sw.Elapsed.Seconds.ToString(); // customize format
};
timer.Start();
感謝您快速的解答。我正在尋找像綁定但沒有找到的東西。不幸的是它不起作用(我認爲它應該)我想使用一個變量String show = randomTimespanvariable.ToString(); – asky 2011-12-23 17:12:25
綁定不起作用的原因非常簡單。 Stopwatch.Elapsed不是DependancyProperty。原因不是因爲你不想每1毫秒更新它的值。你的情況沒有優雅的綁定解決方案。我嘗試了上面的代碼,即使使用'Timespan.FromSeconds(0.1)'作爲Interval,它的工作也非常好。 – 2011-12-23 17:14:17
如果你仍然想要綁定,只需將myStopWatch.Elapsed值分配給字符串類型的DependancyPeoprty,然後只是將TextBlock綁定到該綁定,但在功能上您沒有更改任何內容,也許不需要調用Dispatcher。讓我知道你是否需要代碼幫助。 – 2011-12-23 17:20:27