我正在使用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
答案 0 :(得分:1)
如果您想获得如下所示的效果:
您可以查看此帖子:WPF Treeview: data binding of heterogeneous types 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 here的更多帮助。
答案 1 :(得分:0)
首先,您需要向我们提供一个XAML,您尝试绑定一个集合(我想您正在使用HierarchicalDataTemplate。第二,我看到“媒体列表”是私有的。当我知道私有财产无法绑定。
答案 2 :(得分:0)
您无法与fields
绑定。您只能绑定到班级中的Public Properties
。
public ObservableCollection<Playlist> PlayLists { get; set; }