получить доступ к DataContext окна из DataGrid - PullRequest
3 голосов
/ 03 августа 2010

У меня возникла проблема с доступом к DataContext окна из DataGrid.

DataGrid связан с IBindingList:

public IBindingList Items{ get; set; }
    private void initItems()
    {
        //ItemFactory is a Linq2SQL Context, Items is the view of availabe Items
        this.Items = this.ItemFactory.Items.GetNewBindingList();
    }

Из моего xaml я пытаюсь получить эти данные для заполнения ComboBox:

 <DataGridComboBoxColumn Header="Typ" 
                             DisplayMemberPath="Description"
                             SelectedValuePath="ItemID"      
                             ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Mode=OneWay, Path=DataContext.Items, UpdateSourceTrigger=PropertyChanged}" />

Но это не работает. Я уже перепробовал много вариантов. ComboBox не заполняется.
Любая помощь с благодарностью!

Примечание:

Работает следующий ComboBox в том же окне:

<ComboBox x:Name="workingCombo" ItemsSource="{Binding Path=Items}" DisplayMemberPath="Description" SelectedValuePath="ItemID" />

1 Ответ

1 голос
/ 03 августа 2010

DataGridComboBoxColumn не связан напрямую с визуальным деревом, поэтому операция FindAncestor не будет выполнена (и также DataContext не будет унаследован).

  • Самое простое решение - создайте ViewModel для каждой строки и предоставьте ее в ItemsSource для ComboBox.
  • Используя DataGridTemplateColumn и поместив ComboBox в DataTemplate помогает.
  • Здесь - еще один пост, касающийся этой проблемы.И посмотрите также на этот пост.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...