2016-10-20 14 views
0

Я разрабатываю приложение в Xamarin для Mac, для которого требуется TreeView. Я реализую NSOutlineView для достижения TreeView. Я хочу заполнить представление схемы из списка, который сам содержит список другого типа. например Перечень является список Список Определения классов, как следоватьКак заполнить NSOutlineView в Xamarin Mac, имеющем 2 разных вложенных списка

Class ClassA:NSObject 
{ 
    public List<ClassB> listClassB { get; set; } 
    public string Types { get; set; } 
} 

И ClassB нижеследовал

public class ClassB 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public int TypeName { get; set; } 
     public ClassC Owner { get; set; } 
     public DateTime LastActivity { get; set; } 
     public Collection<ClassC> Users { get; set; } 
    } 

Но я не получаю, как реализовать этот список в NSOutlineView в Xamarin для макинтош Примеры, приведенные xamarin, содержат только один класс. но у меня есть 3 класса

Пожалуйста, помогите мне как можно скорее.

ответ

0

Существует несколько способов решить эту проблему. Я использую один общий класс как sourcelistitem, который имеет список дочерних элементов для создания дерева.

Вы можете либо наследовать классы, наследуемые от общего ресурса, либо создать свойства в классе общих элементов, чтобы он мог содержать ваши разные классы.

Упрощенный пример с методом наследования:

public class SourceListItem: NSObject, IEnumerator, IEnumerable 
{ 
    private List<SourceListItem> _items = new List<SourceListItem>(); 
} 

Class ClassA: SourceListItem 
{ 

    public string Types { get; set; } 
} 

Class ClassB: SourceListItem 
{ 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public int TypeName { get; set; } 
    public DateTime LastActivity { get; set; } 

} 
+0

Благодаря SVN для решения –

+0

Великий, не забудьте пометить anwser как принято – svn

0

Фундаментально, какао не заботится о своих внутренних структур данных, она заботится только о двух вещах:

  • Структура дерева. Вы предоставляете это через свой производный класс NSOutlineViewDataSource, отвечая GetChildrenCount/GetChild/ItemExpandable

  • Просмотр для каждого дерева. Вы предоставляете это через ваш производный класс NSOutlineViewDelegate, возвращающий один через GetView (с переданным вам NSObject, который вы вернули в GetChild).

Так что ваш делегат/DataSource можно передать ссылку на ваши списки, определить из них, сколько элементов/дети должны быть показаны, и правильно ответить на вопросы.

Вы можете посмотреть подробный пример здесь: https://github.com/xamarin/mac-samples/blob/master/NSOutlineViewAndTableView/NSOutlineViewAndTableViewExample/NSOutlineViewCode/NSOutlineViewExample.cs#L47

 Смежные вопросы

  • Нет связанных вопросов^_^