Bonjour,

J'ai actuellement un petit souci avec les composants qui affichent des listes (ListView ou TreeView)
Si mon ItemsSource est un ObservableCollection<string>, il m'est impossible de modifier les string de cette collection, aucune modification n'est renvoyé à la collection.

J'ai essayé ceci (Items est la collection de string de mon Datacontext)
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<ListView Name="lvAttr" ItemsSource="{Binding Items}">
    <ListView.ItemTemplate>
	<DataTemplate>
	    <TextBox Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
	</DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<TreeView ItemsSource="{Binding Items}">
    <TreeView.Resources>
	<DataTemplate DataType="{x:Type system:String}">
	    <TextBox Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
	</DataTemplate>
    </TreeView.Resources>
</TreeView>

J'ai également essayé un binding sur SelectedItem ou SelectedValue de ListView, idem, aucune modif n'est renvoyé

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<ListView Name="lvAttr" ItemsSource="{Binding Items}" />
<TextBox Text="{Binding ElementName=lvAttr, Path=SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />


Alors, j'ai pu me faire une mini classe qui a une propriété qui pointe vers ma string, et là ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
public class TestValue
{
	private int index;
	private ObservableCollection<string> tp;
	public TestValue(int v, ObservableCollection<string> col) { index = v; tp = col; }
	public string Get {
	    get { return tp[index]; }
	    set { tp[index] = value; }
	}
}
mais j'aurais souhaité garder des listes de strings.

Donc, fais-je quelque chose de mal, ou autre ?

Merci d'avance