Bindung UserControl innerhalb einer ListView WPF datatemplate
Also ich habe dieses Problem:
- Die ich geschaffen habe ein UserControl (im Grunde eine textbox und label). Dieses user control ich bin in der Lage, die Bindung mit einer Abhängigkeitseigenschaft.
- Ich habe eine ListView, in dem ich ein Textfeld, in das datatemplate, und binden Sie die "text" - Eigenschaft, um die gebundenen Wert.
so weit so gut. aber jetzt, wenn ich versuchen, das Benutzersteuerelement in diesem gleichen Szenario, in der DependencyProperty-nicht mehr funktioniert.
Hier ist der code: [ListView]
<ListView x:Name="DtContactDetailListView" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<UserControl:tbx label="{Binding detail}" text="{Binding value}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListView>
Die Bindung in dieser situation funktioniert, wenn Ihr außerhalb der listview, in anderen teilen der form... ist also nicht ein Problem mit meinem DepedencyProperty. Auch ersetzen die UserControl eine Textbox, und ein hinzufügen der exakt gleichen auch Verbindlich arbeitet. Aber es funktioniert nicht unter diese... warum?!
UPDATE
Wie gewünscht, habe ich aktualisiert, der code für das UserControl. Denken Sie daran, dies funktioniert perfekt, wenn die Bindung an andere Elemente auf dem Fenster oder der Seite. Funktioniert einfach nicht, innerhalb einer listview.
Public Sub New()
InitializeComponent()
Me.DataContext = Me
End Sub
'TextBox property
Public Shared ReadOnly tbxTextProperty As DependencyProperty = DependencyProperty.Register("text", GetType([String]), GetType(tbx), New FrameworkPropertyMetadata(String.Empty))
Public Property text() As [String]
Get
Return GetValue(tbxTextProperty).ToString()
End Get
Set(value As [String])
SetValue(tbxTextProperty, value)
End Set
End Property
Was ist
UserControl:tbx
? Vielleicht tbx:UserControl
?UserControl ist der name von meinem Projekt, wo ich Benutzersteuerelemente und tbx ist der name des usercontrol selbst.
InformationsquelleAutor CogentP | 2014-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ich bereits im Kommentar-Problem ist in deinem UserControl, müssen Sie explizit festlegen
DataContext
des userControl zu sich selbst:So, Einband
label="{Binding detail}"
der Suche nach einer Immobiliedetail
im dataContext des UserControl (sich selbst) und nicht in der zugrunde liegenden dataContext des ListBoxItem.Haben Sie zu tun, explizite Bindung in Fall, dass Sie wollen, zu suchen Element in DataContext des ListBoxItem wie:
ODER
Sollten Sie entfernen Einstellung
DataContext
sich in UserControl.Müssen Sie eingestellt haben, es zu binden, die mit deklariert DP. Ich würde vorschlagen, um binden, mit
ElementName
und entfernen Einstellung DataContext. So dass Sie nicht haben, um geben Sie die explizite Bindung und Ihr Benutzersteuerelement, wird automatisch Erben DataContext von seiner Visuellen Eltern.InformationsquelleAutor Rohit Vats