J'essaie de faire un binding TwoWay sur une collection de string ObservableCollection<string>. La collection est affichée correctement, mais je n'arrive pas à mettre à jour les éléments de la collection.
Et j'ai le même problème avec une collection de "int" et surement avec toutes les collections de type de base.

Voici le code C#

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
 
public partial class ListViewTest : Window
    {
        ObservableCollection<string> _GameCollection = new ObservableCollection<string>();
 
        public ListViewTest()
        {
            _GameCollection.Add("World Of Warcraft");
            _GameCollection.Add("Halo");
            _GameCollection.Add("Gears Of War");
 
            InitializeComponent();
        }
 
        public ObservableCollection<string> GameCollection
        {
            get
            {
                return _GameCollection;
            }
            set
            {
                _GameCollection = value;
            }
        }
 
        private void AddRow_Click(object sender, RoutedEventArgs e)
        {
            _GameCollection.Add("A New Game");
        }
    }
et le XAML

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
 
<Window x:Class="ListViewTest.Test2.ListViewTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    DataContext="{Binding RelativeSource={RelativeSource Self}}"
    Title="Some Game Data" Height="216" Width="435">
  <StackPanel>
     <TextBox Text="{Binding Titre,Mode=TwoWay}"/>
     <ListView ItemsSource="{Binding GameCollection}">
      <ListView.View>
                <GridView>
                    <GridViewColumn Width="140" Header="Game Name"  >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBox Text="{Binding .,Mode=TwoWay}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
 
        </GridView>
      </ListView.View>
    </ListView>
    <Button HorizontalAlignment="Right" Margin="5,5,5,5" Content="Add Row" Click="AddRow_Click" />
    </StackPanel>
</Window>
Est ce que j'ai fait une erreur dans le binding ou y a t-il une explication logique de ce mode de fonctionnement.

ça fonctionne si je crée un classe wrapper du style

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
 
public class StringWrapper
{
   public StringWrapper() : this(String.Empty)
   {
   }
   public StringWrapper(string s)
   {
      String = s;
   }
   public string StringWrapper
   {
      get { return String ; }
      set { String = value; }
   }
   string m_String ;
}
Avez-vous une idée ?