2

我正在使用 Visual Studio 2010 在 C# 中制作播放器。我正在寻找一种显示文件播放列表的方法。所以我使用的是 TreeView,我想将它与 ObservableCollection 绑定。我的 ObservableCollection :

public class Media
{
 string type; // Video, music, or picture
 string name; // example : 50-cent.mp3
 string path; // The path of the file
}

public class Playlist 
{
 string name; // The name of the playlist
 ObservableCollection<Media> list; // The list of Media
}
public ObservableCollection<Playlist> playLists = new ObservableCollection<Playlist>();

如您所见,我有 var 播放列表,里面有元素,里面有媒体列表。

我想在wpf中显示这个对象,我认为最好的是TreeView。我在互联网上找不到绑定 TreeView 和我的 var 播放列表的方式。我不知道如何在我的 WPF 中制作 TreeView :S ...我在互联网上读到有些人使用 HierachicalDataTemplate,但我真的不知道该怎么做。

请帮忙

编辑我正在尝试大卫给出的帖子,我把我的 WPF

<TreeView Grid.Column="1" Height="193" HorizontalAlignment="Left" Margin="15,209,0,0" Name="treeView1" VerticalAlignment="Top" Width="120">
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type src:Playlist}" ItemsSource="{Binding list}">
                <TextBlock Text="{Binding name}"/>
            </HierarchicalDataTemplate>
            <DataTemplate DataType="{x:Type src:Media}">
                <TextBlock Text="{Binding name}"/>
            </DataTemplate>
        </TreeView.Resources>
    </TreeView>

我有问题,我仍然一无所有 :S 。我完全喜欢教程:S

4

3 回答 3

1

如果你想有如下图这样的效果:

在此处输入图像描述 在此处输入图像描述

你可以看看这篇文章:WPF Treeview: data binding of heterotypes of data using CompositeCollection class

注意:您需要从 INotifyPropertyChanged 接口派生您的类:

public class Media : INotifyPropertyChanged 
{
   string _name;
   string Name {
       get {return _name;} 
       set { _name=value; OnPropertyChanged("Name");}} //OnPropertyChanged is important!
   ...
}

在此处查看有关 INotifyPropertyChanged 的​​更多帮助。

于 2013-03-24T08:30:07.667 回答
0

首先,您需要向我们提供一个 XAML,您可以在其中尝试绑定一个集合(我想您正在使用HierarchicalDataTemplate。作为第二个,我看到“媒体列表”是私有的。据我所知,私有属性不能绑定。

于 2013-03-24T00:44:09.570 回答
0

您不能与fields. 您只能绑定到Public Properties您的班级。

public ObservableCollection<Playlist> PlayLists { get; set; }
于 2013-03-24T08:24:58.857 回答