Je suis tout à fait nouveau à WPF et je suis coincé avec la situation ci-dessous:Comment changer le datacontext pour DataGridComboBoxColumn en une classe spécifique?
class Person{
string Name;
List<Address> ListAddresses;
}
J'ai un DataGrid avec ItemsSource comme ObservableCollection<Person>
. Cette collection est dans la classe MainViewModel
. Je veux créer un DataGridComboBoxColumn
avec les adresses.
<DataGrid ItemsSource="{Binding Persons, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding Path=ListAddresses, RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type local:Person}}}">
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
Je reçois l'erreur suivante:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='PersonApp.UL.ViewModels.Person', AncestorLevel='1''. BindingExpression:Path=ListAddresses; DataItem=null; target element is 'DataGridComboBoxColumn' (HashCode=11440639); target property is 'ItemsSource' (type 'IEnumerable')
Vous mentionnez 'MainViewModel', vous utilisez donc la structure MVVM? –
Oui. J'utilise MVVM. –