2013-04-09 52 views
0

对于Windows Phone,有一些看起来像命令txtBox.Text.Refesh()在Silverlight中刷新似乎文本框

+1

请注意阅读此问题的人 - 这是来自http://stackoverflow.com/questions/15441265/why-the-label-is-not-filled-in-for-with-thread的后续内容。其中一个答案包括调用控件上的“刷新”来获取屏幕更新。 Ivo真正需要做的是知道如何在Silverlight应用程序中抽取消息。可能的设计是程序性的而不是事件驱动的,所以问题不仅仅是如何处理消息。 – 2013-04-09 19:47:22

+0

如果您正在使用基于XAML的技术,您确实需要学习MVVM。你离正确的轨道太远了。不,没有'FrameworkElement.Refresh()'这样的东西。更少的是你会在'Text'属性中找到'Refresh()'方法,该属性的类型为'string'。 – 2013-04-09 19:53:32

+0

正如@HighCore所说,如果有一个Refresh方法,它不会在Text属性中。属性用于读取和写入数据到对象。 – 2013-04-11 00:52:26

回答

0

在我给出我的答复之前......由于HighCore在评论中建议 - 您可能做错了 - 您应该改变工作方式以更适合框架。这说..

你可以用很多方式做到这一点,但这里有两个相当平凡的。

  1. 选项1:奇特的方式。

下载并安装异步CTP。这将允许您使用异步/等待语义。

做这样的事情:

async void Button_Click() 
{ 
for (int i = 0; i < 100; i++) 
{ 
textbox.Text = i.ToString(); 
await Task.Delay(1000); 
} 
} 
  1. 选项2:Good'ol方式。

如果你不想安装异步CTP,通过以下方式重构代码:

void Button_Click() 
{ 
    int i = 0; 
    var t = new DispatcherTimer(); 
    t.Interval = TimeSpan.FromSeconds(1); 
    t.Tick += (s, e) => { textbox.Text = i.ToString; i++; if (i == 20) t.Stop(); }; 
    t.Start(); 
} 

注意,此代码运行时,您的应用程序保持响应,这意味着,人们可能激活你不想让他们的代码。