Привязка в Silverlight 4 к ComboBox в DataGridColumn - PullRequest
0 голосов
/ 14 июля 2011

Здравствуйте. Я всюду искал решение этой проблемы и не могу найти решение.

У меня есть поле со списком в столбце таблицы данных, которое я хочу связать с его источником элементов в список, сгенерированныйбаза данных.Я также хочу привязать выбранное значение к отдельной таблице.Мне удалось это сделать ... но только иногда.Там что-то не синхронизировано.Вот код

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.Есть ли решение сделать это таким образом, или я должен сдаться и попробовать что-то еще?

Спасибо

1 Ответ

0 голосов
/ 14 июля 2011

Попробуйте реализовать INotifyPropertyChanged на вашем провайдере категорий. Где находится список категорий? Это то, что вы должны уведомить изменилось.

...