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: CompositeCollection クラスを使用した異機種データのデータ バインディング

注: 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を使用していると思います。2 つ目として、「メディアのリスト」が非公開であることがわかります。私が知っているように、非公開プロパティは練る。

于 2013-03-24T00:44:09.570 に答える
0

とバインドすることはできませんfields。クラス内でのみバインドできPublic Propertiesます。

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