2 Stimmen

Zwei-Wege-Datenbindung, Silverlight und benutzerdefinierte Steuerelemente/Abhängigkeitseigenschaften

Wenn ich eine Abhängigkeitseigenschaft für ein benutzerdefiniertes Steuerelement erstelle, das eine IEnumerable<T> .

Zum Beispiel mit einer IEnumerable<string> :

public static readonly DependencyProperty MyCollectionProperty =
    DependencyProperty.Register("MyCollection", typeof(IEnumerable<string>), typeof(MyControl), new PropertyMetadata(new List<string>()));

public IEnumerable<string> MyCollection
{
     get { return (IEnumerable<string>)GetValue(MyCollectionProperty); }
     set { SetValue(MyCollectionProperty, value); }
}

Wenn ich eine Datenverknüpfung ObservableCollection<T> o <string> in diesem Fall zu ihm. Kümmert sich Silverlight um die bidirektionale Datenbindung für mich?

0voto

jsmith Punkte 7028

En MSDN "Insbesondere wenn Sie OneWay oder TwoWay verwenden (z. B. wenn Sie möchten, dass Ihre Benutzeroberfläche aktualisiert wird, wenn sich die Eigenschaften der Quelle dynamisch ändern), müssen Sie einen geeigneten Mechanismus zur Benachrichtigung über geänderte Eigenschaften implementieren, z. B. die Schnittstelle INotifyPropertyChanged.

ObservableCollection<T> implementiert INotifyPropertyChanged für Sie. IEnumerable<T> nicht. Wenn Sie eine einfache Zwei-Wege-Bindung wünschen, binden Sie einfach an eine ObservableCollection<T> und ändern Sie Ihre UpdateSourceTrigger まで PropertyChanged . XAML:

<ItemSource = "{Binding Path=MyCollection, UpdateSourceTrigger=PropertyChanged}">

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X