Bonjour,
j'ai actuellement un problème avec une listBox dans laquelle je voudrait à la fois binder la propriété Selected des ListBoxItem et la propriété IsChecked des chekbox de chaque ligne...
je pense pas mêtre fais comprendre donc :
Ma classe pour les objet film à afficher dans la listbox, la propriété Selected doit représenter l'état coché de la ligne
Le code XAML, la partie commenté correspond à une partie du fonctionnent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class Film : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string name) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name)); } public Film(string Titre, int dateSortie) { _titre = Titre; _date = dateSortie; } private string _titre; public string Titre { get { return _titre + " " + _selected; } set { _titre = value; OnPropertyChanged("Titre"); } } private int _date; public int Date { get { return _date; } set { _date = value; OnPropertyChanged("Date"); } } private bool _selected = false; public bool Selected { get { return _selected; } set { _selected = value; OnPropertyChanged("Selected"); OnPropertyChanged("Titre"); } } }
Donc ce que je souhaiterai, ce serait que lorsque je clique sur un item, la propriété Selected du film passe à true, et donc que la CheckBox passe également à true.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <ListView Name="_filmsListView" ItemsSource="{Binding Films}" SelectionMode="Multiple"> <ListView.View> <GridView> <GridViewColumn Width="150"> <GridViewColumn.Header> <GridViewColumnHeader HorizontalContentAlignment="Left"> <CheckBox Name="_headerCheck" Margin="2,0,0,2" Content=" Titre des Films" Click="_headerCheck_Click"/> </GridViewColumnHeader> </GridViewColumn.Header> <GridViewColumn.CellTemplate> <DataTemplate> <!--<CheckBox Name="_filmChkBox" Margin="0,4,0,4" Content="{Binding Path=Titre}" IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" />--> <ListBoxItem IsSelected="{Binding Path=Selected}"> <CheckBox Margin="0,4,0,4" IsChecked="{Binding Path=Selected}" Content="{Binding Path=Titre}"/> </ListBoxItem> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Width="100"> <GridViewColumn.Header> <GridViewColumnHeader HorizontalContentAlignment="Left"> Date de sortie </GridViewColumnHeader> </GridViewColumn.Header> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Path=Date}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
J'espère avoir été clair...
Merci d'avance
@ bientot
Partager