J'essaie de réussir à Twoway de lier une observation d'observaCollection aux zones de texte dans un fichier de données. Je peux obtenir les données à afficher correctement, mais je ne parviens pas à modifier les données de la liste via l'interface utilisateur. J'ai une classe modèle nommée 'modèle' qui contient une observablecollection nommée 'liste'. La classe implémente l'interface inotifypropertychanged. Voici le XAML pour la coquille. Le DataContext pour Window1's Grid est défini sur "thegrid.datacontext = modèle" p> Ceci est le code de la classe de modèle: p> Quelqu'un pourrait-il vous conseiller si je vais à ce sujet la bonne voie? P> P>
3 Réponses :
Vous avez besoin d'une propriété pour lier à deux sens, alors la chaîne n'est pas bonne pour cela.
Enveloppez-le dans un objet de chaîne, comme celui-ci: P>
<TextBox Text="{Binding Path=Value}" />
Travaille pour moi! Merci beaucoup!!
Je ne pense pas que vous devez mettre "chemin =" dans la propriété de texte, text = "{la valeur de liaison}" code> fonctionnerait également
Pourquoi la propriété de cordon unique fonctionne-t-elle mais pas la liste
Je crois que vous devez tirer vos éléments de collecte de dépendancesObject pour la liaison à Twoway au travail. Quelque chose comme: ... p>
Je ne pense pas qu'une dépendancePropriété est requise dans ce cas. Cela n'est nécessaire que si vous voulez lier cette propriété à autre chose.
Basé sur les deux idées maintenant, j'ai pu proposer une solution pour ma demande. Merci pour votre commentaire!!
Cela m'a aidé beaucoup, merci. La partie que j'avais manquante était de définir le mode = Twoway afin que je puisse accéder aux données mises à jour de la listeBOX.ItemsSource après que l'utilisateur ait effectué leurs modifications.
Vue XAML:
class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } private ObservableCollection<StringObject> _List = new ObservableCollection<StringObject>(); public ObservableCollection<StringObject> List { get { return _List; } set { _List = value; NotifyPropertyChanged("List"); } } public ViewModel() { List = new ObservableCollection<StringObject> { new StringObject {Value = "why"}, new StringObject {Value = "not"}, new StringObject {Value = "these"} }; } } public class StringObject { public string Value { get; set; } }