Как связать WPF TreeView с List <Drink>программным способом? - PullRequest
1 голос
/ 20 марта 2010

Так что я очень новичок в WPF и пытаюсь связать или назначить список значений Drink для дерева wpf, но не знаю, как это сделать, и мне действительно трудно найти что-то в Интернете, которое просто показывает вещи без используя xaml.

struct Drink
{
    public string Name { get; private set; }
    public int Popularity { get; private set; }

    public Drink ( string name, int popularity )
        : this ( )
    {
        this.Name = name;
        this.Popularity = popularity;
    }
}

List<Drink> coldDrinks = new List<Drink> ( ){
    new Drink ( "Water", 1 ),
    new Drink ( "Fanta", 2 ),
    new Drink ( "Sprite", 3 ),
    new Drink ( "Coke", 4 ),
    new Drink ( "Milk", 5 ) };
        }
    }

Как я могу сделать это в коде? Например:

treeview1.DataItems = coldDrinks;

и все отображается в виде дерева.

Ответы [ 2 ]

2 голосов
/ 20 марта 2010

Что сказал Рид. Плюс:

Причина, по которой вы не находите программных примеров, заключается в том, что это не очень подходит для работы в коде. Как сказал Рид, вы устанавливаете свойство ItemsSource, но оно не дает результатов, которые вы ищете. В вашем примере вывод будет:

MyApplication.Drink
MyApplication.Drink
MyApplication.Drink
MyApplication.Drink
MyApplication.Drink

Это потому, что шаблон элемента по умолчанию просто отображает результаты метода ToString () элемента. Чтобы получить названия напитков, необходимо указать собственный шаблон товара. Лучше всего это сделать в XAML.

    <TreeView x:Name="treeView1">
        <TreeView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" />
            </DataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

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

2 голосов
/ 20 марта 2010

Вы можете просто установить:

treeView1.ItemsSource = coldDrinks;

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

Почему бы просто не использовать ListView или ListBox?

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