Comment puis-je mettre à jour une ObservableCollection élément du bien de changer dans un WPF DataGrid?

J'ai un WPF DataGrid qui est de la source de données est une ObservableCollection. Il est mis en place sans serrer comme suit:

public class ItemDataCollection : ObservableCollection<ItemData>
{
}

public class ItemData : INotifyPropertyChanged
{
    private bool _selected = true;
    public bool Selected 
    { 
        get
        {
            return _selected;
        }
        set
        {
            if (value != _selected)
            {
                _selected = value;
                NotifyPropertyChanged("Selected");
            }
        }
    }
    }


    _itemDataCol = new ItemDataCollection();
        <... fill the _itemDataCol with data here ...>
    dataGrid1.ItemsSource = _itemDataCol;

Quand la collection est mise à jour, un dataGrid1.Éléments.Refresh() met à jour dataGrid1 bien. Cependant quand je modifie le "Choisi" la propriété d'une ligne en cochant ou décochant la case dans la rangée correspondant à cette propriété, l'élément de la collection ne sont pas mises à jour. J'ai regardé dans l'événement CollectionChanged de la ObeservableCollection, mais ce n'est pas figurant pour obtenir triggerd. Ce câblage dois-je obtenir la dataGrid1 de mise à jour de la collection.

Mise à jour

Tout ce que je faisais réglage de la ItemSource propriété de l'ObservableCollection et de laisser les colonnes d'auto-générer. Depuis, j'ai changé de lier directement, et trouvé plus de détails sur le problème. Quand j'ai cocher simplement la case - aucune notification n'est triggerd. Cependant, si j'ai frappé après vérification de la boîte, puis la collection est mise à jour. Voici la liaison:

<DataGridCheckBoxColumn Binding="{Binding Path=Selected, Mode=TwoWay}" Header="Selected"></DataGridCheckBoxColumn>

Donc je suppose que la question est comment puis-je obtenir la mise à jour avec le fait d'avoir à frapper après cochant ou décochant la case?

Mise à jour #2
(Je ne peux pas répondre comme mon rep n'est pas assez élevé encore)
OK je pense avoir la solution. Si je comprend "UpdateSourceTrigger=PropertyChanged" dans la liaison tout semble fonctionner.

<DataGridCheckBoxColumn Binding="{Binding Path=Selected, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Header="Selected"></DataGridCheckBoxColumn>

Veuillez laisser des commentaires s'il y a des effets négatifs de ce que j'ai peut-être manquant. Merci pour l'aide!

OriginalL'auteur K J | 2012-04-02