TreeView ItemsSource MVVM 绑定
TreeView ItemsSource MVVM Binding
我有一个带有默认 treeviewitem 的 TreeView,另一个带有动态值。但是我没有 TreeViewItem 的名称,而是:
https://gyazo.com/00563993faf7f5d59bb8ab6870fd428d
整行是:"MyWindowsMediaPlayer.Model.PlaylistDB"
XAML:
<TreeView Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="135">
<TreeViewItem Header="Bibliotheque" IsExpanded="True">
<TreeViewItem Header="Mes Musiques" IsSelected="True"></TreeViewItem>
<TreeViewItem Header="Mes Videos"></TreeViewItem>
<TreeViewItem Header="Mes Images"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="Lecteur"></TreeViewItem>
<TreeViewItem Header="Playlist" ItemsSource="{Binding ItemSourceTree}">
</TreeViewItem>
</TreeView>
CS:
private ObservableCollection<PlaylistDB> _itemSourceTree;
public ObservableCollection<PlaylistDB> ItemSourceTree
{
get { return this._itemSourceTree; }
set
{
this._itemSourceTree = value;
this.OnPropertyChanged("ItemSourceTree");
}
}
并且在初始化时:
this.ItemSourceTree.Add(new PlaylistDB() { NamePlaylist = "I'm a test" });
this.ItemSourceTree.Add(new PlaylistDB() { NamePlaylist = "I'm a test 2 " });
您的树视图不知道如何显示 PlaylistDB 对象。
像这样重写 PlaylistDB 的 ToString() 方法:
public override string ToString()
{
return "NameOfElement";
}
您也可以像这里描述的那样编辑您的 TreeView 资源:
http://www.wpf-tutorial.com/treeview-control/treeview-data-binding-multiple-templates/
您必须在 TreeView
资源下定义 DataTemplate
以定义模板 UI 应如何呈现 TreeViewItem 的绑定 ViewModel。
<DataTemplate DataType="{x:Type local:PlaylistDB}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding NamePlaylist }" />
</StackPanel>
</DataTemplate>
我有一个带有默认 treeviewitem 的 TreeView,另一个带有动态值。但是我没有 TreeViewItem 的名称,而是: https://gyazo.com/00563993faf7f5d59bb8ab6870fd428d
整行是:"MyWindowsMediaPlayer.Model.PlaylistDB"
XAML:
<TreeView Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Width="135">
<TreeViewItem Header="Bibliotheque" IsExpanded="True">
<TreeViewItem Header="Mes Musiques" IsSelected="True"></TreeViewItem>
<TreeViewItem Header="Mes Videos"></TreeViewItem>
<TreeViewItem Header="Mes Images"></TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="Lecteur"></TreeViewItem>
<TreeViewItem Header="Playlist" ItemsSource="{Binding ItemSourceTree}">
</TreeViewItem>
</TreeView>
CS:
private ObservableCollection<PlaylistDB> _itemSourceTree;
public ObservableCollection<PlaylistDB> ItemSourceTree
{
get { return this._itemSourceTree; }
set
{
this._itemSourceTree = value;
this.OnPropertyChanged("ItemSourceTree");
}
}
并且在初始化时:
this.ItemSourceTree.Add(new PlaylistDB() { NamePlaylist = "I'm a test" });
this.ItemSourceTree.Add(new PlaylistDB() { NamePlaylist = "I'm a test 2 " });
您的树视图不知道如何显示 PlaylistDB 对象。
像这样重写 PlaylistDB 的 ToString() 方法:
public override string ToString()
{
return "NameOfElement";
}
您也可以像这里描述的那样编辑您的 TreeView 资源: http://www.wpf-tutorial.com/treeview-control/treeview-data-binding-multiple-templates/
您必须在 TreeView
资源下定义 DataTemplate
以定义模板 UI 应如何呈现 TreeViewItem 的绑定 ViewModel。
<DataTemplate DataType="{x:Type local:PlaylistDB}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding NamePlaylist }" />
</StackPanel>
</DataTemplate>