2013-04-09 55 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(); 
} 

注意,此代碼運行時,您的應用程序保持響應,這意味着,人們可能激活你不想讓他們的代碼。