List<string> INotifyPropertyChanged événement
J'ai une classe simple avec une chaîne de propriété et la Liste des biens et j'ai le INofityPropertyChanged événement mis en œuvre, mais quand je fais un .Ajouter à la Liste de chaînes cet événement n'est pas touché donc, mon Convertisseur pour afficher dans la liste n'est pas atteint. Je devine que la propriété a changé n'est pas atteint pour l'Ajouter à la Liste....comment puis-je mettre en œuvre de façon à obtenir la propriété d'événements de changement de frapper???
Dois-je utiliser un autre type de collection?!
Merci pour toute aide!
namespace SVNQuickOpen.Configuration
{
public class DatabaseRecord : INotifyPropertyChanged
{
public DatabaseRecord()
{
IncludeFolders = new List<string>();
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected void Notify(string propName)
{
if (this.PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
#endregion
private string _name;
public string Name
{
get { return _name; }
set
{
this._name = value;
Notify("Name");
}
}
private List<string> _includeFolders;
public List<string> IncludeFolders
{
get { return _includeFolders; }
set
{
this._includeFolders = value;
Notify("IncludeFolders");
}
}
}
}
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
ObservableCollection<string>
au lieu deList<string>
, car, contrairement àList
,ObservableCollection
avisera les personnes à charge lors de son contenu est modifié.Et dans votre cas, je ferais
_includeFolders
readonly - vous pouvez toujours travailler avec une seule instance de la collection.ObservableCollection
?La meilleure façon de faire WPF liste de liaison travail est d'utiliser une collection qui met en œuvre
INotifyCollectionChanged
. Une simple chose à faire ici est de remplacer ou adapter votre liste avec unObservableCollection
.Si vous utilisez
ObservableCollection
, alors à chaque fois que vous modifiez la liste, il va augmenter l'événement CollectionChanged - un événement qui dira le WPF liaison de mise à jour. Notez que si vous échangez le véritable objet de collection, vous voulez soulever l'événement propertychanged de la collection réelle de la propriété.Votre Liste ne va pas le feu à la NotifyPropertyChanged événement automatiquement pour vous.
Contrôles WPF qui exposent une
ItemsSource
propriété sont conçus pour être lié à unObservableCollection<T>
, qui sera mise à jour automatiquement lorsque des éléments sont ajoutés ou supprimés.Vous devriez jeter un oeil à ObservableCollection