我正在尝试为Windows Phone 7编写某种秒表。为了测量经过的时间,我使用了秒表类。要打印输出,我使用文本块。但我希望文本块能够始终显示已用时间。
Unitl现在我只能更新事件上的文本块(我使用了button_Click事件) 我尝试了一段时间(真实)循环,但这只会冻结手机。
有没有人知道如何解决这个问题?
答案 0 :(得分:2)
StopWatch
类没有任何事件,因此如果要绑定,则必须编写自己的类或使用计时器轮询StopWatch。
您可以使用Binding将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();