2012-10-08 88 views
4

問題在於將長時間操作getter綁定到UI控件。 例如,如果我有這樣的特性:Windows 8. Metro應用程序。 XAML異步綁定

public string ButtonText 
{ 
    get 
    { 
     Task.Delay(3000).Wait(); 
     return _buttonText; 
    } 
    set 
    { 
     _buttonText = value; 
    } 
} 

和XAML其綁定到像UI控制:Content="{Binding ButtonText}" UI線程將被阻止。 WPF中有一個Binding.IsAsync屬性,允許在後臺加載綁定數據,但Metro框架中沒有這樣的屬性。

有沒有人有任何關於如何在城域應用程序中進行異步綁定的想法?

回答

-1

微軟有目的地改變了一堆這樣的事情,以鼓勵你不要在你的屬性getters/setters中做需要你獲得屬性異步的東西。不阻止UI線程的「新」方法是執行類似await Task.Delay(3000)而不是使用Binding.IsAsyncawait阻止執行,但不是線程(正是你想要做的)。

以下是有關.NET 4.5上的C#中關於await關鍵字的更多信息的頁面。在頁面底部的例子給出了你的代碼應該是什麼樣子的一個好主意。

http://msdn.microsoft.com/en-us/library/hh156528.aspx

+2

但我怎麼能叫等待的財產裏面? –

+0

沒關係。那麼猜猜這是行不通的。 –

相關問題