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#
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
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"); } }
Est ce que j'ai fait une erreur dans le binding ou y a t-il une explication logique de ce mode de fonctionnement.
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>
ça fonctionne si je crée un classe wrapper du style
Avez-vous une idée ?
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 ; }
Partager