异步加载数据时的反馈

时间:2011-12-09 19:06:55

标签: c# wpf data-binding .net-4.0 asynchronous

我有一个ComboBox,其ItemsSource绑定到一个ObjectAsProvider,其IsAsynchronous属性设置为true。在加载数据的方法中,我放置了等待10秒,以模拟此数据的长加载时间。

异步加载效果很好 - 整个窗口仍然响应,10秒后我看到填充了ComboBox下拉列表。

我想在10秒的等待时间内提醒用户这个特定的ComboBox正在加载数据。类似于控件背景中的progressBar,仅在某个'isLoading'属性或任何设置为true时启用。是否有可能实现这一目标?

感谢。

2 个答案:

答案 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>

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

希望这会有所帮助

答案 1 :(得分:0)

ObjectDataProvider似乎没有任何属性可以说明它何时并且不会检索数据。

这取决于您的体系结构,但您可以公开提供&#34;加载状态的属性&#34;到包含加载数据的方法的对象。然后你可以绑定一个进度条或其他&#34;请等待......&#34;那种新的州财产的UI。