Привязка элементов внутри элемента с другой привязкой
Возникла следующая проблема.
Есть 2 ObservableCollection: это EmpList
и AbsCatList
. DataGrid привязывается к EmpList
и показывает оттуда данные. Внутри грида есть ComboBox, который хранит данные из AbsCatList
. Но его тег необходимо указать из EmpList
.
И вопрос заключается в следующем, как в ComboBox показывать данные из AbsCatList
, а указать его тег - из EmpList
?
<Page.Resources>
<viewmodel:EmployerList x:Key="emp"/>
<viewmodel:AbsenceCategoryList x:Key="absCat"/>
</Page.Resources>
<Grid Background="White">
<DataGrid Name="TimeSheetGrid" IsReadOnly="True" AutoGenerateColumns="False"
DataContext="{Binding Source={StaticResource emp}}"
ItemsSource="{Binding Path=EmpList}"
SelectedValuePath="EmpID">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding EmpName}" Width="Auto">
<DataGridTextColumn.Header>Тип</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="230" IsReadOnly="True"
DataContext="{Binding Source={StaticResource absCat}}"
ItemsSource="{Binding Path=AbsCatList}"
DisplayMemberPath="Name" SelectedValuePath="Id"
Tag="{Binding Path=EmpList, ElementName=EmpID}"
SelectionChanged="ComboBox_SelectionChanged"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
Источник: Stack Overflow на русском