2014-02-12 15 views
0

在我的應用程序中,我使用了AutoCompleteTextBox來顯示基於WPF桌面的應用程序中的用戶列表,但是由於當前的實現,我們從服務器獲取數據,然後在autocompletedropDown列表中顯示數據(名稱,標題)。但這裏取決於來自服務器的響應,它可能會延遲或減慢,所以涉及時間。如何在自動完成需要時間加載時顯示ProgressBar?

如果用戶界面仍然保持這種狀態持續一定時間,比如1秒或2秒,那麼它可能會給最終用戶帶來一種掛起的感覺。 所以我想在自動完成下拉菜單的相同區域顯示進度條。可以做到嗎?

示例代碼我已經寫了,但不知道如何着手?

<toolkit:AutoCompleteBox Name="ACtb" > 
    <toolkit:AutoCompleteBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock ... /> 
       <TextBlock ... /> 
      </StackPanel> 
     </DataTemplate> 
    </toolkit:AutoCompleteBox.ItemTemplate> 
</toolkit:AutoCompleteBox> 

<ProgressBar x:Name="ACProgressBar" IsIndeterminate="True" Visibility="Hidden"/> 

如果有人給一些想法如何做到這一點會很高興。當我們做一個REST調用/或僅1-2秒

回答

1

AutoCompleteBox沒有「填充」狀態,但它擁有的是PopulatingPopulated事件這ACProgressBar將是可見的。一個簡單的選項是AutoCompleteBox的子類,並添加一個代表此狀態的屬性,例如IsPopulating,根據這些事件設置/取消設置。然後將您的ProgressBar的可見性綁定到此屬性。

而不是繼承AutoCompleteBox您可以考慮將此功能封裝在附加的行爲中。

作爲一個建議,你可以考慮在右側的文本字段中的「微調」風格循環加載指標作爲不顯眼的指標,這似乎是一種常見的風格。

相關問題