виртуализация дерева в Silverlight - PullRequest
1 голос
/ 30 апреля 2011

Я использую древовидный набор инструментов Silverlight для отображения набора данных. Он имеет 1000 элементов, а некоторые из дочерних элементов также имеют до 500 дочерних элементов. Загрузка данных и их отображение в виде дерева занимает почти минуту. Есть ли в древовидном представлении виртуализация? Если да, можете ли вы указать мне пример или фрагмент кода, пожалуйста?

Ниже приводится XAML

<controls:TreeView Grid.Column="0" VerticalAlignment="Stretch"
                               ItemsSource="{Binding People}" >
        <controls:TreeView.ItemTemplate>
            <common:HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <StackPanel>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="10*"/>
                            <ColumnDefinition Width="90*"/>                  
                        </Grid.ColumnDefinitions>
                        <CheckBox IsChecked="{Binding TwoState}" Grid.Column="0"/>
                        <TextBlock Grid.Column="1" Text="{Binding Name}"/>
                    </Grid>
                </StackPanel>
            </common:HierarchicalDataTemplate>
        </controls:TreeView.ItemTemplate>
    </controls:TreeView>

Ниже приведен класс, которым я пользуюсь

public class Person:INotifyPropertyChanged
{
    public string Name { get; set; }
    public int Age { get; set; }
    public bool TwoState { get; set; }
    public ObservableCollection<Person> Children { get; set; }

    public Person()
    {
        TwoState = false;
        Children = new ObservableCollection<Person>();
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

1 Ответ

1 голос
/ 30 апреля 2011

Вы должны взглянуть на статью Беа Коста по этому вопросу. проверьте ее блог здесь . с 3.5 у silverlight есть виртуализация для дерева. одна из вещей, которая ускорит вашу производительность - это загрузка дочерних узлов по требованию. она освещает это в своей статье.

В основном все сводится к следующему: вам нужно загружать в интерфейс только то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...