2

我使用 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;
}

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

4

2 回答 2

3

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

于 2010-12-10T17:08:51.460 回答
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>
于 2010-12-10T13:16:09.580 回答