如何在autoComplete需要时间加载时显示ProgressBar?

时间:2014-02-12 06:07:42

标签: wpf autocomplete progress-bar

在我的应用程序中,我使用AutoCompleteTextBox显示基于WPF桌面的应用程序中的用户列表,但由于当前的实现,我们从服务器获取数据,然后在autocompletedropDown列表中显示数据(名称,标题)。但这取决于服务器的响应,它可能会延迟或减慢,所以有一段时间涉及。

如果用户界面保持一段时间(例如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"/>

如果有人知道如何实现那将是幸福的。当我们进行休息呼叫/或仅持续1-2秒

时,此ACProgressBar将可见

1 个答案:

答案 0 :(得分:1)

AutoCompleteBox没有“填充”状态,但它具有PopulatingPopulated个事件。一个简单的选项是子类AutoCompleteBox并添加一个表示此状态的属性,比如IsPopulating,您根据这些事件设置/取消设置。然后将ProgressBar的可见性绑定到此属性。

您可以考虑将此功能封装在附加行为中,而不是继承AutoCompleteBox

作为建议,您可以将右侧文本字段中的“微调”样式圆形加载指示器视为不显眼的指示器,这似乎是一种常见的风格。