我有一个ComboBox,其ItemsSource绑定到一个ObjectAsProvider,其IsAsynchronous属性设置为true。在加载数据的方法中,我放置了等待10秒,以模拟此数据的长加载时间。
异步加载效果很好 - 整个窗口仍然响应,10秒后我看到填充了ComboBox下拉列表。
我想在10秒的等待时间内提醒用户这个特定的ComboBox正在加载数据。类似于控件背景中的progressBar,仅在某个'isLoading'属性或任何设置为true时启用。是否有可能实现这一目标?
感谢。
答案 0 :(得分: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>
这是优先绑定的一个很好的教程
http://www.switchonthecode.com/tutorials/wpf-tutorial-priority-bindings
或者看看msdn
http://msdn.microsoft.com/en-us/library/system.windows.data.prioritybinding.aspx
希望这会有所帮助
答案 1 :(得分:0)
ObjectDataProvider
似乎没有任何属性可以说明它何时并且不会检索数据。
这取决于您的体系结构,但您可以公开提供&#34;加载状态的属性&#34;到包含加载数据的方法的对象。然后你可以绑定一个进度条或其他&#34;请等待......&#34;那种新的州财产的UI。