Comment puis-je lier une ObservableCollection de zones de texte dans un DataTemplate?

Je suis tenté avec succès TwoWay lier une ObservableCollection de zones de texte dans un DataTemplate. Je peux obtenir les données pour les afficher correctement, mais je suis incapable de changer les données de la liste par le biais de l'INTERFACE utilisateur. J'ai un Modèle de classe nommé "modèle" qui contient une ObservableCollection nommé 'List'. La classe implémente l'interface INotifyPropertyChanged. Voici le code xaml pour le shell. Le DataContext pour Window1 de la grille est réglé sur "theGrid.DataContext=modèle"

<Window x:Class="BindThat.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BindThat"
Title="Window1" Height="300" Width="300">
<StackPanel x:Name="theGrid">
    <GroupBox BorderBrush="LightGreen">
        <GroupBox.Header>
            <TextBlock Text="Group" />
        </GroupBox.Header>
        <ItemsControl ItemsSource="{Binding Path=List}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </GroupBox> 
</StackPanel>

C'est le code de la classe de Modèle:

class Model : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(string name)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }

    private ObservableCollection<string> _list = new ObservableCollection<string>();
    public ObservableCollection<string> List
    {
        get { return _list; }
        set 
        { 
            _list = value;
            NotifyPropertyChanged("List");
        }
    }

    public Model()
    {
        List.Add("why");
        List.Add("not");
        List.Add("these?");
    }
}

Quelqu'un pourrait-il indiquer si je vais sur ce le bon chemin?

OriginalL'auteur Johnathan1 | 2009-06-30