c# binding datagrid relative-path itemssource

c# - ¿Cómo usar RelativeSource Binding para crear un enlace DataGrid a Model y ViewModel?



relative-path itemssource (1)

Tengo un DataGrid que tiene un DataGridTemplateColumn que usa el enlace ItemsSource del DataGrid, pero en el ComboBox del DataGridTemplateColumn, quiero poder enlazar al ViewModel para la Vista en lugar de ItemsSource.

<DataGrid ItemsSource="{Binding ModelValues, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > <DataGridTemplateColumn Header="myHeader" Width="200"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False" SelectedValue="{Binding myID, Mode=TwoWay}" ItemsSource="{Binding Path=myList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ViewModel}}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False" SelectedValue="{Binding myID, Mode=TwoWay}" ItemsSource="{Binding Path=myList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ViewModel}}}" /> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn> </DataGrid>

ViewModel tiene una propiedad ModelValues una propiedad myList . El ModelValues se usa para ItemsSource de DataGrid y quiero usar myList para ComboBox ItemsSource .

¿Cómo cambiaría mi comando RelativeSource para que funcione?


Enlace al contexto de datos de la grilla:

<DataGrid ItemsSource="{Binding ModelValues, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" > <DataGridTemplateColumn Header="myHeader" Width="200"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False" SelectedValue="{Binding myID, Mode=TwoWay}" ItemsSource="{Binding Path=DataContext.myList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <ComboBox DisplayMemberPath="Value" SelectedValuePath="Key" IsEnabled="False" SelectedValue="{Binding myID, Mode=TwoWay}" ItemsSource="{Binding Path=DataContext.myList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" /> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn> </DataGrid>