我有一个数据网格,其中列出了我的代理商列表。 我显示了我的代理,并向该数据网格添加了两个组合框,一个“矩阵”组合框(一个矩阵=数周内的日程表),以及一个组合框,显示了所选矩阵的星期几。
我的问题是,如果我更改组合框(例如矩阵),则所有组合框都将同时更改,如下所示:
如何才能“取消”组合框,使它们彼此独立,以便我可以针对每个代理或每一行在其组合框中选择不同的矩阵?
像特工A =矩阵A 代理B =矩阵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);
}
}
}
}
我的目标是从末尾的每一行中检索数据。