Я пытаюсь установить флажок, чтобы выбрать все, но, несмотря на исследования по другим темам, я не понимаю, почему это не работает:
РЕДАКТИРОВАТЬ: проблема в том, что он ищет " Выберите «AllAllAgent» или «selectAllAgentsCommand» в качестве свойства «агента», который является элементом «Источник» моего DG, а не в ViewModel. Можно ли это исправить?
<DataGrid x:Name="DGagents" Grid.Row="1" Grid.Column="3" Grid.RowSpan="3" Margin="5" AlternationCount="2" ItemContainerStyle="{StaticResource alternatingStyle}" ItemsSource="{Binding Agents}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Command="{Binding SelectAllAgentCommand}"
CommandParameter="{Binding IsChecked, RelativeSource={RelativeSource Self}}" PresentationTraceSources.TraceLevel="High"></CheckBox>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox 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 Birthday}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Semaine" Width="60" HeaderStyle="{StaticResource CenterGridHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Birthday}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Période" Width="250" HeaderStyle="{StaticResource CenterGridHeaderStyle}"/>
</DataGrid.Columns>
</DataGrid>
мой флажок привязки к "IsSelected" работает отлично, но тот, что в заголовке ни к чему не приводит, я пробовал через команду или через привязку имеет свойство, но ничего не происходит, когда я проверить его, команду или свойство.
private bool _SelectAllAgents;
public bool SelectAllAgents
{
get
{
return _SelectAllAgents;
}
set
{
_SelectAllAgents = value;
foreach (AgentModel ag in _Agents)
ag.IsSelected = value;
RaisePropertyChanged("SelectAllAgents");
RaisePropertyChanged("Agents");
}
}
public RelayCommand SelectAllAgentCommand { get; set; }
SelectAllAgentCommand = new RelayCommand(() => selectAllAgentMethod());
private void selectAllAgentMethod()
{
if (SelectAllAgents == true)
{
SelectAllAgents = false;
}
else
{
SelectAllAgents = true;
}
}
![enter image description here](https://i.stack.imgur.com/BrAnA.png)
![enter image description here](https://i.stack.imgur.com/BIO3d.png)
Редактировать 2: Спасибо за помощь ! Это работает:
IsChecked="{Binding Path=DataContext.SelectAllAgents,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"