Silverlight和Caliburn Micro的TreeView数据绑定问题

时间:2010-12-10 13:11:04

标签: c# .net data-binding treeview caliburn.micro

我使用Silverlight和Caliburn Micro,并且在让子节点出现在树中时遇到问题。 TreeView包含在网格中,这是我的XAML摘录:

<Grid.Resources>
    <sdk:HierarchicalDataTemplate x:Key="AccountTemplate">
        <TextBlock Text="{Binding AccountNumber}" />
    </sdk:HierarchicalDataTemplate>
    <sdk:HierarchicalDataTemplate x:Key="CategoryTemplate"
                                  ItemsSource="{Binding CategoryServices}"
                                  ItemTemplate="{StaticResource AccountTemplate}">
        <TextBlock Text="{Binding Path=CategoryName}" FontWeight="Bold" />
    </sdk:HierarchicalDataTemplate>
</Grid.Resources>

<Controls:TreeView Grid.Row="1" Grid.Column="0" 
    ItemsSource="{Binding FromAddressServices}" 
    ItemTemplate="{StaticResource CategoryTemplate}" x:Name="FromTreeView" />

绑定的类是:

public class AccountAtAddress
{
    public string AccountNumber { get; set; }
}

public class ServiceCategory
{
    public string CategoryName { get; set; }
    public ObservableCollection<AccountAtAddress> CategoryServices;
}

我遇到的问题是第一级项目显示但没有孩子。有没有人有关于如何使这项工作的想法?

2 个答案:

答案 0 :(得分:3)

您需要将CategoryServices变为公共属性。您将它定义为公共字段,数据绑定机制不适用于字段。

答案 1 :(得分:0)

请尝试以下方法:

<Grid.Resources>
    <sdk:HierarchicalDataTemplate DataType="AccountAtAddress">
        <TextBlock Text="{Binding AccountNumber}" />
    </sdk:HierarchicalDataTemplate>
    <sdk:HierarchicalDataTemplate DataType="ServiceCategory"
                                  ItemsSource="{Binding CategoryServices}">
        <TextBlock Text="{Binding Path=CategoryName}" FontWeight="Bold" />
    </sdk:HierarchicalDataTemplate>
</Grid.Resources>