2011-02-09 78 views
0

我想在Silverlight中填充一个TreeView,但我遇到了一些困难 - 它总是显示为空。Silverlight TreeView不会填充

我找到了一个很好的教程(here),我创建了一个新项目并使用C#编写了它的代码,并且它完美地工作。我现在试图将其纳入我的项目(使用VB),但它不工作。我的VB代码如下:

XAML

<UserControl.Resources> 
    <common:HierarchicalDataTemplate x:Key="myHierarchicalTemplate" ItemsSource="{Binding Items}" > 
     <TextBlock Text="{Binding myString}" /> 
    </common:HierarchicalDataTemplate> 
</UserControl.Resources> 

<controls:TreeView Height="200" HorizontalAlignment="Left" Margin="280,464,0,0" Name="TreeView1" VerticalAlignment="Top" Width="120" ItemTemplate="{StaticResource myHierarchicalTemplate}" /> 

VB代码:

Public Class myItem 

Public myString As String 
Public Items As ObservableCollection(Of myItem) 

Public Sub New(ByVal myString As String, ByVal ParamArray myItems() As myItem) 
    Me.myString = myString 

    Dim itemsObservableCollection = New ObservableCollection(Of myItem) 

    For Each item As myItem In myItems 
     itemsObservableCollection.Add(item) 
    Next 

    Me.Items = itemsObservableCollection 

End Sub 
End Class 

并填充它:

Dim itemsSource As New ObservableCollection(Of myItem) 

    itemsSource.Add(New myItem("Hello", New myItem("World"), 
             New myItem("Foo"))) 
    itemsSource.Add(New myItem("Moo", New myItem("Boo", New myItem("Goo")))) 




    TreeView1.ItemsSource = itemsSource 

我缺少什么?

编辑:我已经尝试调试该项目,并且“itemsSource”集合似乎正在生成,并被分配给TreeView1.ItemsSource罚款,但没有显示。它是一个显示绑定问题?

+0

对象必须执行INotifyPropertyChanged – 2011-02-09 11:12:18

回答

4

要使用绑定,你必须公开属性 - 虽然我的VB.NET不是很好,它看起来像项目是一个字段,而不是myItem类中的属性,myString也是如此。

干杯 -

+0

完美 - 感谢。我将声明更改为:`Public Property myString As String`,现在它工作正常。谢谢。 PS我的VB可能跟你的一样好! – 2011-02-09 11:38:15