2010-01-02 75 views
1

我正在使用silverlight中的datagrid。我有一個WCF服務,返回一個List,在填充數據網格時工作正常。 CoreEmployee返回EmployeeId,FirstName,LastName,HourlyRate,HireDate的屬性。這是我的每小時收費率的XAML:Silverlight DataGrid組合框新手問題

<data:DataGridTemplateColumn Header="Hourly Rate"> 
    <data:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding HourlyRate}" /> 
     </DataTemplate> 
    </data:DataGridTemplateColumn.CellTemplate> 
    <data:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <!--ItemsSource="{Binding PayRateList, Source={StaticResource PayRateProvider}}"--> 
      <ComboBox SelectedItem="{Binding HourlyRate}" 
         ItemsSource="{Binding HourlyRates}" 
         local:ComboBoxService.ForceOpen="true" 
        /> 
     </DataTemplate> 
    </data:DataGridTemplateColumn.CellEditingTemplate> 
</data:DataGridTemplateColumn> 

這裏就是我試圖完成:當每位員工每小時的速度填充的數據網格,我也希望所有的獨特工資率的列表爲數據網格中的每個人員。

我的代碼背後並不這樣認爲:

private List<Decimal> _hourlyRates = new List<decimal>(); 
public List<Decimal> HourlyRates 
{ 
    get { return _hourlyRates; } 
} 

void client_GetEmployeesCompleted(object sender, GetEmployeesCompletedEventArgs e) 
{ 
    try 
    { 
     if (e.Result != null) 
     { 
      EmployeesGrid.ItemsSource = e.Result; 

      // Convert an ObservableCollection<T> to a List<T> 
      List<CoreEmployee> employees = e.Result.ToList<CoreEmployee>(); 

      // Generate a unique list 
      // http://stackoverflow.com/questions/223400/checking-for-duplicates-in-a-complex-object-using-linq-or-lamda-expression 
      var results = from item in employees 
          group item by item.HourlyRate into g 
          select g.First(); 

      foreach (CoreEmployee employee in results) 
      { 
       HourlyRates.Add(employee.HourlyRate); 
      } 

      _dataHasLoaded = true; 
     } 
    } 
    catch (Exception exc) 
    { 
     // Eat the exception 
    } 
} 

然而,當我試圖雙擊文本塊出現問題,組合框會顯示,但沒有任何數據。

我在做什麼錯?

回答

0

在foreach循環中填充列表後,您應該在HourlyRates屬性上引發PropertyChanged事件。另外,將ComboBox SelectedItem的模式設置爲TwoWay。