[英]C# WPF How to keep Application responsive while adding many UI Elements to Stackpanel
[英]How to call a function that loads UI elements to different stackpanel from the main thread in WPF C# application
嗨,我在WPF C#應用程序中工作,我是新手。
在我的應用程序中,有一個堆棧面板,讓我們將此堆棧面板稱為第一個堆棧面板。 此堆棧面板有一個未設置寬度和高度的文本框。 它的邊距為100。其文本換行設置為換行。
用戶在文本框中提供文本信息。 如果用戶想要更多的文本框,則有一個按鈕。 單擊此按鈕后,第一個堆棧面板中將出現一個具有先前文本框屬性的新文本框,用戶可以連續輸入。
主要目標是顯示用戶在第一個堆棧面板的文本框中鍵入文本時第一個堆棧面板的打印預覽。
所以我要做的是:我有另一個堆棧面板,讓我們將第二個堆棧面板稱為第一個堆棧面板。 每次按鍵都會調用某種功能或方法。 此函數或方法從第一個堆棧面板的每個文本框中收集所有文本到一個列表(字符串類型),然后將列表中的每個字符串作為文本塊(子元素)添加到第二個堆棧面板。 將列表中的所有字符串添加到第二個堆棧面板后,第一個堆棧面板中的文本框將重新獲得焦點,以便用戶可以繼續鍵入文本。
到目前為止,一切正常。 問題是,隨着用戶添加更多的文本框,需要更長的時間才能出現在第二個堆棧面板中,並將焦點從第一個堆棧面板重新設置為文本框。
為了克服這種情況,我使用了以下代碼:
private void OnPreviewKeyUp(object sender, KeyEventArgs e){
//code to collect text from each textbox from first stackpanel and add into a list of type string.
this.Dispatcher.Invoke(()=> {
ReloadTextInfoToPanel(textBoxTextList);
});
}
上面的代碼,仍然需要花費相同的時間。 我什至嘗試使用
this.Dispatcher.InvokeAsync();
但是,它消耗的時間相同。
我想要的是,當用戶在第一個堆棧面板的文本框中鍵入內容時,應獨立調用函數或方法,而不會阻塞控件。
希望您已經了解了,這是什么問題。 請原諒我的英語不好。 請指導我。 提前致謝。
這不是您問題的直接答案,但我無法發表評論,但仍想嘗試提供幫助
您可以考慮每隔一兩秒(使用計時器)而不是每次按鍵更新第二個面板。 這將大大減少更新時間,但可能不會打擾用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.