Ich implementiere ein Auswahlfeld alle Kontrollkästchen in Datagrid in WPF mit 'MVVM' Muster. Das Problem, mit dem ich konfrontiert bin, besteht darin, das Kontrollkästchen "Alle auswählen" zu aktivieren. Alle Kontrollkästchen werden aktiviert, aber erst nach dem Scrollen in der Bildlaufleiste. Wie behebe ich dieses Problem?Datagrid nicht ordnungsgemäß aktualisiert, aktualisiert beim Scrollen
Scrollen nach unten nach der Überprüfung 'Alle wählen'
[
Und wieder nach oben zurück
Scrollen [
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set
{
_IsSelected = value;
OnPropertyChanged("IsSelected");
}
}
private bool _AllSelected;
public bool AllSelected
{
get { return _AllSelected; }
set
{
_AllSelected = value;
foreach (var reportListItemModel in UsecaseListItems)
{
reportListItemModel.IsSelected = this._AllSelected;
OnPropertyChanged("IsSelected");
}
OnPropertyChanged("AllSelected");
}
}
private ObservableCollection<UseCase> _usecaseListItems = new ObservableCollection<UseCase>();
public ObservableCollection<UseCase> UsecaseListItems
{
get { return _usecaseListItems; }
set {
_usecaseListItems = value;
OnPropertyChanged("UsecaseListItems");
}
}
XAML-Code
<DataGrid Grid.Row="0" ItemsSource="{Binding Path=UsecaseListItems, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" Name="MyDataGrid"
CanUserAddRows="False" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Path=IsSelected,UpdateSourceTrigger=PropertyChanged, Mode=TwoWay,IsAsync=True}" Width="50">
<DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate x:Name="dtAllChkBx">
<CheckBox Name="cbxAll" Content="All" IsChecked="{Binding Path=DataContext.AllSelected,RelativeSource={RelativeSource AncestorType=UserControl },Mode=TwoWay}"/>
</DataTemplate>
</DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>
<DataGridTemplateColumn Header="Name" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding UsecaseName}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Bitte zeigen Sie den Code, der die Einstellung des Kontrollkästchens, sowie das XAML für das DataGrid. – toadflakz
benachrichtigt Ihre reportListItemModel.IsSelected-Eigenschaft die geänderte Eigenschaft? Ich schätze, dass es nicht so ist. – Muds