在Silverlight 4中绑定到DataGridColumn中的ComboBox

本文关键字:DataGridColumn 中的 ComboBox 绑定 Silverlight | 更新日期: 2023-09-27 18:02:02

你好,我一直在到处寻找解决这个问题的方法,但没有找到解决方法。

我有一个数据网格列的组合框,我想将它的itemsource绑定到数据库生成的列表。我还想将选中的值绑定到一个单独的表。我已经成功地做到了……但只是有时候。有些东西不同步。下面是一些代码

xaml:

<Grid.Resources>
    <my:CategoriesProvider x:Key="categoriesProvider"/>
</Grid.Resources>

..........................................

    <data:DataGridTemplateColumn Header="Category" Width="100" x:Name="cboDataCol">
                          <data:DataGridTemplateColumn.CellEditingTemplate>
                            <DataTemplate x:Name="cboDataTemplate">
   <ComboBox Name="cboCategories" SelectedItem="{Binding category, Mode=TwoWay}" ItemsSource="{Binding CategoriesList,Source={StaticResource categoriesProvider}}" DisplayMemberPath="name" SelectedValue="{Binding Path=category.id}"  SelectedValuePath="id"/>
                            </DataTemplate>
                        </data:DataGridTemplateColumn.CellEditingTemplate>
                    </data:DataGridTemplateColumn>
c#:

public class CategoriesProvider : List<category>
    {
        MenuItems.MenuItemService.MenuItemServiceClient svc = new     MenuItems.MenuItemService.MenuItemServiceClient();
        ObservableCollection<category> allCategories;
        public CategoriesProvider()
        {
            svc.getCategoriesCompleted += new EventHandler<getCategoriesCompletedEventArgs>(svc_getCategoriesCompleted);
            svc.getCategoriesAsync();
        }
        public void svc_getCategoriesCompleted(object sender, getCategoriesCompletedEventArgs e)
        {
            //m_autoresetevent.Set();
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                allCategories = e.Result;
                if (allCategories == null)
                {
                    MessageBox.Show("NULL123");
                }
            });

        }

有时似乎控件在getItemsAsync完成之前被绑定到列表。这样做有解决办法吗?或者我应该放弃并尝试其他方法?

谢谢

在Silverlight 4中绑定到DataGridColumn中的ComboBox

尝试在您的CategoriesProvider上实现INotifyPropertyChanged。categoreslist在哪里?这就是你应该通知的变化