1 pièce(s) jointe(s)
Binding avec filtre dans un ListView
Bonjour à tous,
Je suis dessus depuis 2 jours, je crois que j'ai tout essayé
J'aimerais faire quelque chose comme ça :
Pièce jointe 195069
En fait, c'est une liste d' "intervenants".
Un intervenant possède un id (caché), un type (Combobox) et un contact (Autocomplete).
Le comportement est simple :
- On clique sur ajouter => Un élément vide vient d'ajouter dans la liste.
- On renseigne le type dans la Combobox, puis on saisit du texte dans l'AutoComplete => Le nom des contacts correspondants au type choisit s'affiche et on en choisit un.
Rien à faire, l'autocomplete fonctionne mais lorsque je sauve, les datas "intervenants" sont vides ou non modifiées.
Par contre, le type lui, est bien changé si je change la valeur du Combobos, c'est au niveau de l'autocomplete qu'il y a un souci.
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
| <ListView x:Name="lvInterv" ItemsSource="{Binding ElmtInfo.intervenants, Mode=TwoWay}" HorizontalAlignment="Stretch" Style="{StaticResource lvTrans}">
<ListView.View>
<GridView>
<GridViewColumn Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox Grid.Column="0" x:Name="cbTypesInt" Margin="2" SelectedValue="{Binding typeInt}" HorizontalAlignment="Stretch"
ItemsSource="{Binding Interv.ElmtsTypes.items, Source={StaticResource Locator}}" HorizontalContentAlignment="Stretch">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged" >
<Classes:ActionCbb2AcbOnSelChange TargetObject="{Binding ElementName=acInterv}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
<Toolkit:AutoCompleteBox Grid.Column="1" x:Name="acInterv" Margin="2" FilterMode="None" IsTextCompletionEnabled="False"
SelectedItem="{Binding ." Populating="acInterv_Populating" HorizontalAlignment="Stretch" >
<Toolkit:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding contact.id}" Width="30" Foreground="DarkGray" />
<Label Content="{Binding contact.firstName}" />
<Label Content="{Binding contact.lastName}" FontWeight="Bold" />
</StackPanel>
</DataTemplate>
</Toolkit:AutoCompleteBox.ItemTemplate>
</Toolkit:AutoCompleteBox>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView> |
Avez vous une idée ?
l'autocomplete peut-il binder l'objet instancié de l'item conteneur ?
Même problème sur le DataGrid... Je crois que WPF ne sais pas attribuer un objet en deux temps.
J'aimerais reprendre le souci de Zéro, je suis surement mal parti :
Comment faire pour avoir un comportement et une interface comme l'image du premier post ? (le plus simplement possible)
0. Un a un formulaire qui affiche l'objet P, qui a une liste de I.
1. On clique sur "Ajouter", ça ajoute un élément de type I, mais VIDE (pas null) à la liste de données => Nouvelle ligne Ligne.
2. Une fois dans la liste, on attribue à I un élément existant dans la BDD => I1.
2bis. Aller hop, on est fou, on en met un 2ème et on l'attribue => I2.
3. On valide le formulaire et, ho miracle, on retrouve P avec sa collection d'éléments I1 et I2.
La particularité n'est pas de modifier un sous élément de l'objet bindé à DataGridRow mais l'objet lui même.
Quelqu'un a déjà fait ça ? :roll:
Merci d'avance.