我有一个TreeView说我绑定到一个观察的集合,它有它内部的两个可观察集合:WPF树视图与多种类型的子节点
Public Class ocSpecialPolicies
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
Protected Overridable Sub OnPropertyChanged(ByVal Propertyname As String)
If Not Propertyname.Contains("Changed") Then
Changed = True
End If
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Propertyname))
End Sub
Private _changed As Boolean
Public Property Changed() As Boolean
Get
Return _changed
End Get
Set(ByVal value As Boolean)
If _changed <> value Then
_changed = value
OnPropertyChanged("Changed")
End If
End Set
End Property
Public Property Items As New ObservableCollection(Of ocSpecialPoliciesItem)
Public Property Explanations As New ObservableCollection(Of ocSpecialPoliciesExplain)
Private _RecallNum As String
Public Property RecallNum As String
Get
Return _RecallNum
End Get
Set(value As String)
If _RecallNum <> value Then
_RecallNum = value
OnPropertyChanged("RecallNum")
End If
End Set
End Property
End Class
我有一半的工作:
<TreeView Name="TreeView2" Margin="3" ItemsSource="{Binding ElementName=MainWindow, Path=SpecialPolicies, UpdateSourceTrigger=PropertyChanged}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Items, UpdateSourceTrigger=PropertyChanged}">
<TextBlock Text="{Binding Path=RecallNum}" >
</TextBlock>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=LaborOp}" >
</TextBlock>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我在哪里可以看到RecallNum属性和Items属性,但我无法弄清楚如何在RecallNum下显示解释作为附加子节点。
理想的情况下,它会是这个样子:
RecallNum*
Items
LaborOp
LaborOp
LaborOp**
Explanations
*ExplanationText
**ExplanationText
我试过HierarchicalDataTemplate in TreeView.Resources,但我只是没有做正确的事情。绑定是我一直困难的时刻,我的头绕过。
老实说,我不知道该怎么做......你会在我的半工作例子中看到,我将TreeView2绑定到SpecialPolicies ObservableCollection属性,然后绑定到Item Property的HierarchicalDataTemplate。这是我能够实现它的唯一途径。我想我需要将SpecialPolicies.RecallNum从HierarchicalDataTemplate中取出来,这样我可以嵌套子项目,但不知道如何。我真的希望有一种方法可以在UI视图中查看/调试数据绑定,因为现在我觉得我只是在黑暗中猜测和磕磕绊绊。 – AndyD273
啊,重新阅读,无论如何我可能会误解。我想你想在层次结构的一个层次上显示ocSpecialPoliciesItem,然后ocSpecialPoliciesExplain更深一层。每个项目都有 - 解释? – PScr
不是每一个。而且,随着数据表的建立,说明和项目没有明确的联系,因为可以在没有项目的情况下进行解释(这可能是对特殊政策本身的解释,而不是对项目的解释......)。简短的版本,我必须把他们当作两种不同的儿童类型的SpecialPolicy,而不是孩子/孙子...... – AndyD273