У меня есть таблица данных со списком моих агентов. Я отображаю свои агенты и добавляю два комбинированных списка в эту сетку данных: комбинированный список "matrice" (matrice = расписание на несколько недель) и комбинированный список, отображающий дни недели для выбранной matrice.
Моя проблема заключается в том, что если я изменяю комбинированный список, например матрицу, все комбинированные списки изменяются одновременно следующим образом:
Как можно Я "раскручиваю ie" комбо-боксы, чтобы они не зависели друг от друга, чтобы я мог для каждого агента или каждой строки выбрать различную матрицу в своем комбо-боксе?
Как агент A = Матрица A, агент B = Matrice Z ...
Вот мой код:
<!--Section datagrid-->
<DataGrid x:Name="DGagents" Grid.Row="1" Grid.Column="3" Grid.RowSpan="3" Margin="5" AlternationCount="2" ItemContainerStyle="{StaticResource alternatingStyle}" ItemsSource="{Binding Agents}" IsReadOnly="True" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox IsChecked="{Binding Path=DataContext.SelectAllAgents,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PresentationTraceSources.TraceLevel="High"></CheckBox>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox VerticalAlignment="Center" HorizontalAlignment="Center" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Matricule" Width="100" HeaderStyle="{StaticResource CenterGridHeaderStyle}" Binding="{Binding Matricule}" />
<DataGridTextColumn Header="Nom" Width="120" HeaderStyle="{StaticResource CenterGridHeaderStyle}" Binding="{Binding Nom}"/>
<DataGridTextColumn Header="Prénom" Width="120" HeaderStyle="{StaticResource CenterGridHeaderStyle}" Binding="{Binding Prenom}"/>
<DataGridTemplateColumn Header="Matrice" Width="150" HeaderStyle="{StaticResource CenterGridHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.MatricesEtablissement,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" SelectedItem="{Binding Path=DataContext.selectedMatrice,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding IDMatrice}"
Margin="4,0,0,0"/>
<TextBlock Grid.Column="1"
Text="{Binding Nom}"
Margin="4,0,0,0"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Semaine" Width="60" HeaderStyle="{StaticResource CenterGridHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.MatriceWeeks,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" SelectedItem="{Binding Path=DataContext.selectedWeeks,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Num_jour_sem}"
Margin="4,0,0,0"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Date début" Width="150" HeaderStyle="{StaticResource CenterGridHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding DateDebut}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Date fin" Width="150" HeaderStyle="{StaticResource CenterGridHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding DateFin}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
И C#
private ObservableCollection<Matrix> _MatricesEtablissement;
public ObservableCollection<Matrix> MatricesEtablissement
{
get
{
return _MatricesEtablissement;
}
set
{
if (value != _MatricesEtablissement)
{
_MatricesEtablissement = value;
RaisePropertyChanged("MatricesEtablissement");
}
}
}
private Matrix _selectedMatrice;
public Matrix selectedMatrice
{
get
{
return _selectedMatrice;
}
set
{
if (value != _selectedMatrice)
{
_selectedMatrice = value;
UpdateMatriceWeek(value);
RaisePropertyChanged("selectedMatrice");
}
}
}
private ObservableCollection<Matrix> _MatriceWeeks;
public ObservableCollection<Matrix> MatriceWeeks
{
get
{
return _MatriceWeeks;
}
set
{
if (value != _MatriceWeeks)
{
_MatriceWeeks = value;
RaisePropertyChanged("MatriceWeeks");
}
}
}
private Matrix _selectedWeeks;
public Matrix selectedWeeks
{
get
{
return _selectedWeeks;
}
set
{
if (value != _selectedWeeks)
{
_selectedWeeks = value;
RaisePropertyChanged("selectedWeeks");
}
}
}
private void UpdateListeMatrice()
{
MatricesEtablissement = new ObservableCollection<Matrix>();
foreach(Matrix m in Matrices)
{
if (MatricesEtablissement.Any(p => p.IDMatrice == m.IDMatrice) == false)
MatricesEtablissement.Add(m);
}
}
private void UpdateMatriceWeek(Matrix selectedValue)
{
MatriceWeeks = new ObservableCollection<Matrix>();
if(selectedValue != null)
{
foreach (Matrix m in Matrices)
{
if (m.IDMatrice == selectedMatrice.IDMatrice)
{
MatriceWeeks.Add(m);
}
}
}
}
Моя цель - получить данные из каждой строки в конце.