2012-07-11 93 views
1

我正在使用Silverlight 5和WCF Ria Services。爲了快速開發,我編寫了一個基於提供者的系統來填充ComboBoxes。當我設置一個組合提供程序並將EditValue綁定到ViewModel時,一切正常。如何在ComboBox中顯示BusyIndi​​cator

<Controls:BLComboBoxEdit2 x:Name="cbeDepartmentId" 
    EditValue="{Binding Path=Selected.DepartmentId, Mode=TwoWay" 
    ComboDataProvider="{Binding Path=DepartmentComboDataProvider}" /> 

但是爲了通知用戶,而組合正在等待數據被提供者加載,我需要一個BusyIndi​​cator。我無法弄清楚如何在繼承控件中顯示BusyIndi​​cator(我們可以通過重寫OnPaint事件等方式回到WinForm中),所以我創建了一個UserControl,xaml就是這樣(我們正在使用DevExpress ComboBoxEdit),

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

,它看起來像這樣,

combos on work

在某些情況下(網格列等),我們需要一個ComboBoxEdit衍生控制,而不是用戶控件。所以我開始修改代碼,但我被卡住了。我不知道如何添加一個子控件(或覆蓋控件?),以便在控件忙時顯示。

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

當運行上述代碼中,組合工作正常,但繁忙指示符中未示出(從這個代碼預期,繁忙指示符成爲二合一的內容,如果我彈出組合[加載時正在進行中]我可以看到BusyIndi​​cator :)但第一次加載後,它會消失,因爲內容已更改)。

有沒有辦法做到這一點?現在我試圖在後面的代碼中設置內容(在IsBusy更改後,我想將內容設置爲BusyIndi​​cator或默認保留),但沒有運氣。

任何幫助將不勝感激。

回答

1
  1. 嘗試把兩個控制裝置的組合框和BusyIndi​​cator控件成像到所述網格的相同列中的相同地點和異步調用和改變之前使IsBusy =真(具有相同的高度和重量兩者)它在完成事件

  2. 假把ComboBox中BusyIndi​​cator控件內部的內容

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

感謝我使用這種方法的answer.In事實(你可能會看到上面的鱈魚e,combo和busyindicator在同一個網格行中),並將其轉換爲用戶控件(BLComboBoxEdit)以避免爲每個組合使用編寫BusyIndi​​cator,但這種方式控件的類型爲UserControl.I需要ComboBoxEdit派生控件才能在某些cases.When從ComboBoxEdit派生我意識到我不知道在哪裏把BusyIndi​​cator xaml.If我直接寫它成爲內容。我需要將BusyIndi​​cator顯示爲組合上的覆蓋圖。順便說一下,此問題的優先級已更改,現在它不是必須的:) – 2012-07-12 07:50:40

相關問題