verificacion verdadero programar hacer formulario falso ejemplos ejemplo cuadro control comprobacion como celda casillas casilla c# wpf listbox

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.