c# - verdadero - Al marcar una casilla de verificación de seleccionar todo en WPF no cambian otras casillas de verificación en Listbox
ejemplos de casilla de verificacion (1)
Implementé un ListBox
usando esto y esto . Ato mi lista real de 29 objetos y funciona bien. En XAML:
<ListBox Name="WBauNrList" ItemsSource="{Binding}" Grid.Row="7" Grid.Column="2" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True" Height="100" >
<ListBox.ItemTemplate>
<HierarchicalDataTemplate>
<CheckBox Content="{Binding Baunr}" IsChecked="{Binding IsChecked,Mode=TwoWay}"/>
</HierarchicalDataTemplate>
</ListBox.ItemTemplate>
</ListBox>
En codigo:
datenpunktList = new ObservableCollection<Datenpunkt>();
foreach (var d in WerkstattList.DistinctBy(p => p.lokNr))
{
var newd = new Datenpunkt() { Baunr = d.lokNr };
datenpunktList.Add(newd);
}
WBauNrList.ItemsSource = datenpunktList;
Pero el problema:
Quiero tener CheckBoxes
seleccionados para que el usuario pueda seleccionar y anular la selección de todos los elementos. ¡Funciona de manera extraña!
Después de marcar selectAll CheckBox
, se verificarán todos los elementos que no están dentro del alcance de la barra de desplazamiento (la lista se desplaza), luego debería desplazarme hacia abajo y hacia arriba para ver que todos los elementos estén marcados.
XAML:
<CheckBox Name="selectAll" Click="selectAll_Click" >Secelct all</CheckBox>
Código:
private void selectAll_Click(object sender, RoutedEventArgs e)
{
foreach (Datenpunkt item in WBauNrList.Items)
{
item.IsChecked = true ;
}
}
No tengo idea de qué hacer.
Gracias de antemano, Mo
IsChecked
implementación de IsChecked
su propiedad podría verse así.
public class Datenpunkt : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void Notify(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
Notify("IsChecked");
}
}
}
Eche un vistazo a la página MSDN INotifyPropertyChanged para obtener más información.