1 pièce(s) jointe(s)
CheckedListBox et double Binding
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
Code:
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"); }
}
} |
Le code XAML, la partie commenté correspond à une partie du fonctionnent.
Code:
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> |
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.
J'espère avoir été clair...
Merci d'avance
@ bientot