Проблемы привязки данных TreeView с Silverlight и Caliburn Micro - PullRequest
2 голосов
/ 10 декабря 2010

Я использую 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 ]

3 голосов
/ 10 декабря 2010

Вам необходимо сделать CategoryServices публичной собственностью.Вы определили его как открытое поле, и механизм привязки данных не работает с полями.

0 голосов
/ 10 декабря 2010

Попробуйте вместо этого:

<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>
...