Hallo,
ich habe schon sehr viel gesucht, auch gefunden aber leider habe ich bei diese Erklärungen immer den Zusammenhang bzw. Sinn verloren. Klar, es fehlen auch die Englischkenntnisse um im Kontext zu bleiben.
Da gibt's es noch sehr viel mehr aber der Anfang gehört dem DependencyProperty mit Type Boolean in einer UserControl.
In einem einfachen Beispiel habe ich ein DependencyProperty mit Getter und Setter an einen Label Content(OneWay) gebunden in einem Window.
Das darin enthaltene DataGrid hat 2 Events (MouseEnter, MouseLeave) die das Dependency aktualisieren sollen, und dann den Label Content.
Das scheint funktioniert zu haben, ob das ganz richtig war bin ich mir nicht so sicher. In einem UserControl klappts nicht mehr.
Beispiel1
Nun habe ich das DependencyProperty in ein UserControl gelegt und es hat die Bindung verloren, ging also nicht mehr.
Also habe ich den 2.Typ(Bezeichnung dafür kenne ich nicht) den ich kannte genommen und es ging, dummerweise scheint dabei das Property unter Dauerfeuer zu stehen da der
alt und neu Vergleich irgendwie nicht greift
Beispiel2
Vielleicht kann jemand helfen
Wo liegt denn bei diesen DependencyProperties der Unterschied?
Macht das einen Unterschied in welchem Control die welche Typen von DependencyProperties vorhanden sind?
Wann werden diese DependencyProperties mit "New PropertyMetadat" benutzt und in welchen Situationen; Wenn ich es so verstanden habe nur bei einfachen Datentypen(Boolean, String...)?
Wieso hat Beispiel 1 überhaupt ein Binding beim ersten mal und verliert es dann?
Woher kommt bei Beispiel 2 der Dauerfeuer Effect?
In Beispiel 2 steht "DependencyProperty.RegisterAttached", bei einem Test hat das auch ohne "Attached" funktioniert, warum das?
Das bitte nicht , ist das total verkehrt von mir verstanden?
Grüße
ich habe schon sehr viel gesucht, auch gefunden aber leider habe ich bei diese Erklärungen immer den Zusammenhang bzw. Sinn verloren. Klar, es fehlen auch die Englischkenntnisse um im Kontext zu bleiben.
Da gibt's es noch sehr viel mehr aber der Anfang gehört dem DependencyProperty mit Type Boolean in einer UserControl.
In einem einfachen Beispiel habe ich ein DependencyProperty mit Getter und Setter an einen Label Content(OneWay) gebunden in einem Window.
Das darin enthaltene DataGrid hat 2 Events (MouseEnter, MouseLeave) die das Dependency aktualisieren sollen, und dann den Label Content.
Das scheint funktioniert zu haben, ob das ganz richtig war bin ich mir nicht so sicher. In einem UserControl klappts nicht mehr.
Beispiel1
VB.NET-Quellcode
- Public Shared ReadOnly canScrollIntoViewTypeProperty As DependencyProperty = _
- DependencyProperty.RegisterAttached("canScrollIntoViewType", GetType(Boolean), _
- GetType(MainWindow), _
- New PropertyMetadata(True, New PropertyChangedCallback(AddressOf canScrollIntoViewTypePropertyChanged)))
- Public Property canScrollIntoViewType() As Boolean
- Get
- Return CBool(GetValue(canScrollIntoViewTypeProperty))
- End Get
- Set(value As Boolean)
- SetValue(canScrollIntoViewTypeProperty, value)
- End Set
- End Property
- Public Shared Sub canScrollIntoViewTypePropertyChanged(ByVal sender As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
- If Not e.OldValue.Equals(e.NewValue) Then
- sender.SetValue(canScrollIntoViewTypeProperty, e.NewValue)
- End If
- End Sub
- Private Sub DataGrid_MouseEnter(sender As Object, e As MouseEventArgs)
- Me.canScrollIntoViewType = False
- End Sub
- Private Sub DataGrid_MouseLeave(sender As Object, e As MouseEventArgs)
- Me.canScrollIntoViewType = True
- End Sub
Nun habe ich das DependencyProperty in ein UserControl gelegt und es hat die Bindung verloren, ging also nicht mehr.
Also habe ich den 2.Typ(Bezeichnung dafür kenne ich nicht) den ich kannte genommen und es ging, dummerweise scheint dabei das Property unter Dauerfeuer zu stehen da der
alt und neu Vergleich irgendwie nicht greift
Beispiel2
Visual Basic-Quellcode
- Private Shared Sub canScrollIntoViewChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
- If Not e.NewValue.Equals(e.OldValue) Then
- Dim canScrollIntoView As FrameworkElement = DirectCast(d, FrameworkElement)
- If CBool(e.NewValue) Then
- canScrollIntoView.IsEnabled = True
- Else
- canScrollIntoView.IsEnabled = False
- End If
- End If
- End Sub
- Public Shared Function canScrollIntoViewGetType(obj As DependencyObject) As Boolean
- Return CBool(obj.GetValue(canScrollIntoViewProperty))
- End Function
- Public Shared Sub canScrollIntoViewSetType(obj As DependencyObject, value As Boolean)
- obj.SetValue(canScrollIntoViewProperty, value)
- End Sub
- Public Shared ReadOnly canScrollIntoViewProperty As DependencyProperty = DependencyProperty.RegisterAttached("canScrollIntoViewType", _
- GetType(Boolean), _
- GetType(MainJobTableUc), _
- New PropertyMetadata(True, New PropertyChangedCallback(AddressOf canScrollIntoViewChanged)))
- Private Sub DataGrid_MouseEnter(sender As Object, e As MouseEventArgs)
- Me.SetValue(canScrollIntoViewProperty, False)
- End Sub
- Private Sub DataGrid_MouseLeave(sender As Object, e As MouseEventArgs)
- Me.SetValue(canScrollIntoViewProperty, True)
- End Sub
Vielleicht kann jemand helfen
Wo liegt denn bei diesen DependencyProperties der Unterschied?
Macht das einen Unterschied in welchem Control die welche Typen von DependencyProperties vorhanden sind?
Wann werden diese DependencyProperties mit "New PropertyMetadat" benutzt und in welchen Situationen; Wenn ich es so verstanden habe nur bei einfachen Datentypen(Boolean, String...)?
Wieso hat Beispiel 1 überhaupt ein Binding beim ersten mal und verliert es dann?
Woher kommt bei Beispiel 2 der Dauerfeuer Effect?
In Beispiel 2 steht "DependencyProperty.RegisterAttached", bei einem Test hat das auch ohne "Attached" funktioniert, warum das?
Das bitte nicht , ist das total verkehrt von mir verstanden?
Grüße
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mojoReini“ ()