2011-12-09 9 views
1

私は、IsAsynchronousプロパティがtrueに設定されているObjectDataProviderにItemsSourceがバインドされているComboBoxを持っています。データをロードするメソッドの中で、このデータの長いロード時間をシミュレートするために、10秒待機します。非同期にデータをロードするときのフィードバック

非同期読み込みがうまくいきます - ウィンドウ全体がまだ反応していて、10秒後にComboBoxドロップダウンが表示されます。

この特定のComboBoxがデータを読み込んでいることを、その10秒の待機時間中にユーザーに警告したいと思います。コントロールの背景にあるprogressBarのようなもの。特定の 'isLoading'プロパティやtrueに設定されている間にのみ有効です。これは可能ですか?

ありがとうございました。

答えて

6

バインディングは、ここであなた

<ListBox> 
    <ListBox.ItemsSource> 
    <PriorityBinding> 
     <!-- highest priority sources are first in the list --> 
     <Binding Path="LongLoadingCollection" IsAsync="True" /> 
     <!-- this contains only one item like "loading data..." --> 
     <Binding Path="LoadMessage" IsAsync="True" /> 
    </PriorityBinding> 
    </ListBox.ItemsSource> 
</ListBox> 

enter image description here

のための解決策になる可能性が優先順位が優先バインディング
http://www.switchonthecode.com/tutorials/wpf-tutorial-priority-bindings

またはMSDN
を見てみるための良いチュートリアルですのように、これが見えます http://msdn.microsoft.com/en-us/library/system.windows.data.prioritybinding.aspx

これが役に立ちます。

+0

これは素晴らしいです!以前はこれを見たことがありません。ありがとう。 – user981225

+0

あなた自身の答えを立てようとしてください、オフサイトのリンクは役に立つかもしれませんが、あなたがオフサイトにリンクしている場合は、公式文書が十分であるかどうかを参照してください、それはいくつかのランダムなブログに優先される公式の文書は、おそらくそれも文書化された技術に行きました:['PriorityBinding'](http://msdn.microsoft.com/en-us/library/system.windows.data.prioritybinding.aspx) –

0

ObjectDataProviderには、データを取得しているときと取得していないときのプロパティはありません。

これはアーキテクチャによって異なりますが、データをロードするメソッドを含むオブジェクトに「ロード状態」を与えるプロパティを公開する可能性があります。次に、進行状況バーや他の「Please Wait ...」のようなUIをその新しい状態プロパティにバインドすることができます。

関連する問題