我有一個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