首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BusyIndicator中显示ComboBox

如何在BusyIndicator中显示ComboBox
EN

Stack Overflow用户
提问于 2012-07-11 07:50:14
回答 1查看 1.2K关注 0票数 1

我使用Silverlight 5与WCF Ria服务。为了快速开发,我编写了一个基于提供程序的系统来填充ComboBoxes。当我为组合体设置提供程序并将EditValue绑定到ViewModel时,一切都很完美。

代码语言:javascript
复制
<Controls:BLComboBoxEdit2 x:Name="cbeDepartmentId" 
  EditValue="{Binding Path=Selected.DepartmentId, Mode=TwoWay" 
  ComboDataProvider="{Binding Path=DepartmentComboDataProvider}" />

但是为了在combo等待提供者加载数据时通知用户,我需要一个BusyIndicator。我不知道如何在继承的控件中显示BusyIndicator (我们可以在WinForm时代通过重写OnPaint事件等方式实现这一点)。所以我创建了一个UserControl,xaml是这样的(我们使用DevExpress ComboBoxEdit),

代码语言:javascript
复制
<UserControl ...>

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Assets/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

<Grid>
    <dxe:ComboBoxEdit x:Name="combo" />
    <toolkit:BusyIndicator x:Name="busyIndicator" Style="{StaticResource AjaxBusyIndicator}"
            IsBusy="{Binding Path=ComboDataProvider.IsWorking}">
    </toolkit:BusyIndicator>
</Grid>

看起来就像这样,

在某些场景中(网格列等)我们需要一个ComboBoxEdit派生的控件,而不是UserControl。所以我开始修改代码,但我被卡住了。我不知道如何添加子控件(或者覆盖控制?)在控件繁忙时显示。

代码语言:javascript
复制
<dxe:ComboBoxEdit ...>

<dxe:ComboBoxEdit.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="../Assets/Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Common:PublicStrings x:Key="ResourceStrings" />
    </ResourceDictionary>
</dxe:ComboBoxEdit.Resources>

<Grid>
    <toolkit:BusyIndicator x:Name="busyIndicator" Style="{StaticResource AjaxBusyIndicator}"
            IsBusy="{Binding Path=ComboDataProvider.IsWorking}" />
</Grid>

当我运行上述代码时,组合体正常工作,但没有显示繁忙指示符(正如预期的那样,忙碌指示器将成为组合体的内容,如果我在加载过程中弹出该组合体,我可以看到BusyIndicator :),但是在第一次加载之后,由于内容发生了更改,它消失了。

有办法这样做吗?现在,我正在尝试在代码后面设置内容(在IsBusy更改后,我希望将内容设置为BusyIndicator或保留为默认值),但没有成功。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-07-12 06:01:30

  1. 尝试将两个控件都放在相同的位置,就像放在网格的同一列上一样,并在异步调用之前将IsBusy=变为真(两者具有相同的高度和重量),并在已完成的事件中将其更改为false
  2. 将comboBox作为内容放在BusyIndicator中
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11427976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档