Hallo,
ich habe gerade ein kleines Binding Problem.
Folgendes Binding:
<ListView ItemsSource="{Binding Workspace.CurrentDocument.XmlEditorViewModel.XmlErrors}">
Klappt prinzipiell auch, Problem ist allerdings, dass zum Zeitpunkt von InitializeComponent() CurrentDocument == null ist.
Daher kommt kein Binding zustande. Das Output zeigt keine Fehler, trotzdem funktioniert es nicht.
Selbstverständlich soll es nur funktionieren, wenn CurrentDocument NICHT mehr null ist.
Gibt es eine Möglichkeit, dem Control mitzuteilen, dass es sein Binding nochmal 'überprüfen' oder neu erstellen soll?
Oder kann man gar nicht auf etwas binden, das null ist?
Moin moin,
ist in deinem VM das INotifyPropertyChanged Interface implentiert und ruft das dein Property auf wenn sich der Wert ändert?
Mfg.
Mr. Bob
XMLErrors ist eine DependencyProperty.
Definition:
public static readonly DependencyProperty XmlErrorsProperty =
DependencyProperty.Register("XmlErrors", typeof(ObservableCollection<M10XmlError>), typeof(M10Document));
Macht das in diesem Fall einen Unterschied zu INotify?
Achso, CurrentDocument ist natürlich auch eine DP:
public static readonly DependencyProperty CurrentDocumentProperty =
DependencyProperty.Register("CurrentDocument", typeof(M10Document), typeof(WorkspaceViewModel), new PropertyMetadata(CurrentDocumentChanged));
Vor dem Aufruf von IntializeComponent() Sind alle Objekte bis Workspace erstellt. Der Rest (CurrentDocument und XMLErrors) ist null.
Workspace ist keine DP, sollte aber auch nicht erforderlich sein, Workspace wechselt nicht und ist vor InitializeComponent() schon vorhanden.
Okay, also das Ändern von XmlErrors von einer DP zu einer Property mit INotifyPropertyChanged hat geholfen, jetzt klappt es.
Kann mir jetzt vielleicht noch einer erklären, warum es mit einer DP nicht geht? Wäre echt gut zu wissen 😃
Kann mir jetzt vielleicht noch einer erklären, warum es mit einer DP nicht geht? Wäre echt gut zu wissen
DependencyProperties haben in VMs nichts zu suchen - denn wenn ein DependencyObject nicht in einer UI-Hierarchie eingebaut ist, treten sehr viele, seltsame Phänomene beim Binding auf.
Ist halt einfach so 😉
Oh. Na dann werde ich jetzt mal ganz schnell ganz viele DPs umändern 😃 Danke 😃