2012-05-21 26 views
1

我有一個從數據庫接收信息的wpf應用程序。當我第一次加載應用程序的默認窗口時,我有文本框需要填充的數據,但文本框不會被填充,所以我想知道,如何獲得頁面之前,甚至加載頁面,然後設置將textbox文本屬性設置爲數據。 我有我的LINQ to SQL代碼try和catch塊內是這樣的:在wpf頁面加載之前獲取sql值

try 
{ 
    MY LINQ TO SQL CODE HERE: 
} 
catch 
{ 

} 

我真的必須這樣做喜歡這一點,因爲如果我不這樣做像這樣,只是把SQL代碼,我得到超時錯誤。所以,因爲我需要這樣做,我的SQL代碼不會在頁面加載之前運行,而是在加載之後運行。我怎樣才能讓它在窗口加載之前運行我的代碼,這樣我就可以設置我的文本框的值? 謝謝。

回答

0

將您的查詢代碼放入實例化窗口時調用的構造函數中。

public class myWindow : Window 
{ 
    public myWindow() 
    { 
     //code here 
     InitializeComponent(); 
    } 
} 

我建議您在查詢執行時顯示加載屏幕或類別,如果查詢失敗,則顯示失敗屏幕/消息。

1

你可能會考慮使用這個asynchronous binding。它甚至內置到XAML語法,就像這樣:

<TextBox Text="{Binding Path=MyBinding,IsAsync=True,FallbackValue=Loading...}" /> 

現在讓我們假設MyBinding財產運行於SQL:

string _myBinding = null; 
public string MyBinding { 
    get { 
     if (_myBinding == null) 
     { 
      // get value from SQL operation 
     } 
     return _myBinding; 
    } 
} 

現在你的文本框會顯示故障預置值(「中.. 。「),並且UI不會阻塞,但會在您的SQL操作完成時加載。

在SQL操作運行時(用戶可能認爲你的應用程序被凍結,感到沮喪等),採用這種方法可能更好,而不是阻塞UI。

+0

嗨,謝謝你的回覆。我嘗試使用你的代碼,並得到了很多錯誤,並想知道是否可以如果我使用自己的代碼像try和catch塊,然後設置文本框綁定路徑來引用我的查詢,或者我會特別需要使用您提供的代碼才能正常工作?謝謝 –

+0

編輯:我把它的工作,把字符串名稱內塊...此外它沒有工作,文本框只是有一個加載文本,但數據尚未綁定到它任何想法? –

+0

@MarkMackanga是的,應該沒問題。只是以此代碼爲例。 – McGarnagle

相關問題