C# 将2个ObservableCollections绑定到Listview

C# 将2个ObservableCollections绑定到Listview,c#,wpf,listview,data-binding,observablecollection,C#,Wpf,Listview,Data Binding,Observablecollection,我是WPF的新手,在绑定方面有困难,一直在寻找不同的解决方案,但并没有任何帮助。 有两个可观察的集合,我想绑定到listview的不同列中。 XAML代码: <GroupBox Header="Search results" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="727" Width="739" FontFamily="Malgun Gothic" FontSize="24"

我是WPF的新手,在绑定方面有困难,一直在寻找不同的解决方案,但并没有任何帮助。 有两个可观察的集合,我想绑定到listview的不同列中。 XAML代码:

<GroupBox Header="Search results" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="727" Width="739" FontFamily="Malgun Gothic" FontSize="24">
        <ListView x:Name="ListView1"  HorizontalAlignment="Left" Width="729" FontFamily="Malgun Gothic" FontSize="24" Background="{x:Null}" Margin="0,0,-2,0" ItemsSource="{Binding ElementName=Search, Path=Library}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Song name" DisplayMemberBinding="{Binding Track}" Width="550"/>
                    <GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}" Width="170"/>
                </GridView>
            </ListView.View>
            <ListView.DataContext>
                <Classes:Library/>
            </ListView.DataContext>
            <Classes:Library Text=""/>
        </ListView>
    </GroupBox>
来自课堂:

    private ObservableCollection<string> track = new ObservableCollection<string>();
    private ObservableCollection<string> artist = new ObservableCollection<string>();
    public ObservableCollection<string> Track
    {
        get { return track; }
        set { track = value; }
    }
    public ObservableCollection<string> Artist
    {
        get { return artist; }
        set { artist = value; }
    }
我错过了什么

NIT的更新: System.Windows.Data错误:40:BindingExpression路径错误:在“对象”“库”(HashCode=36404074)上找不到“相册”属性。BindingExpression:Path=Albums;DataItem='Library'(HashCode=36404074);目标元素是“ListView”(Name='ListView1');目标属性为“ItemsSource”(类型为“IEnumerable”) System.Windows.Data错误:40:BindingExpression路径错误:在“对象”“库”(HashCode=40706798)上找不到“跟踪”属性。BindingExpression:Path=Track;DataItem='Library'(HashCode=40706798);目标元素为“TextBlock”(名称=“”);目标属性为“Text”(类型为“String”)
System.Windows.Data错误:40:BindingExpression路径错误:在“对象”“库”(HashCode=40706798)上找不到“艺术家”属性。BindingExpression:Path=Artist;DataItem='Library'(HashCode=40706798);目标元素为“TextBlock”(名称=“”);目标属性为“Text”(类型为“String”)

创建一个包含两个属性的模型类,而不是有两个分离的集合

public class Album
{
 public string Track{get;set;}
 public string Artist{get;set;}
}
并创建该类的ObservableCollection

public ObservableCollection<Album> Albums{get;set;}

foreach (DirectoryInfo diNext in dirs)
{
      foreach (FileInfo test in diNext.GetFileSystemInfos("*"+tb+"*"+".mp3", SearchOption.AllDirectories))
      {
                    u.Read(test.FullName);
                    Album album = new Album;
                    album.Track = u.Title;
                    album.Artist = u.Artist;
                    Albums.Add(album);
       }
 }
publicobservableCollection相册{get;set;}
foreach(目录中的目录信息)
{
foreach(diNext.GetFileSystemInfos(“*”+tb+“*”+“.mp3”,SearchOption.AllDirectories)中的FileInfo测试)
{
u、 读取(test.FullName);
相册=新相册;
唱片公司Track=u.Title;
专辑艺术家=美国艺术家;
相册。添加(相册);
}
}
现在将此集合绑定到ListView

  <ListView x:Name="ListView1"  HorizontalAlignment="Left" Width="729" FontFamily="Malgun Gothic" FontSize="24" Background="{x:Null}" Margin="0,0,-2,0" ItemsSource="{Binding  Path=Albums}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Song name" DisplayMemberBinding="{Binding Track}" Width="550"/>
                <GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}" Width="170"/>
            </GridView>
        </ListView.View>
        <ListView.DataContext>
            <Classes:Library/>
        </ListView.DataContext>
        <Classes:Library Text=""/>
    </ListView>


代码生成了,但除了它真正清理了代码之外,没有任何更改:)谢谢。但它仍然没有显示任何东西。已调试并检查新集合不是空的Bums需要是公共属性(get)Dosent知道你的意思吗?它是公共的?相册应该是图书馆的财产。。不可变..请查看更新的答案抱歉,因为你是个不折不扣的人。对象引用未设置为对象的实例在Albums中持续发生。添加(album)?它不是没有get的属性
public ObservableCollection<Album> Albums{get;set;}

foreach (DirectoryInfo diNext in dirs)
{
      foreach (FileInfo test in diNext.GetFileSystemInfos("*"+tb+"*"+".mp3", SearchOption.AllDirectories))
      {
                    u.Read(test.FullName);
                    Album album = new Album;
                    album.Track = u.Title;
                    album.Artist = u.Artist;
                    Albums.Add(album);
       }
 }
  <ListView x:Name="ListView1"  HorizontalAlignment="Left" Width="729" FontFamily="Malgun Gothic" FontSize="24" Background="{x:Null}" Margin="0,0,-2,0" ItemsSource="{Binding  Path=Albums}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Song name" DisplayMemberBinding="{Binding Track}" Width="550"/>
                <GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}" Width="170"/>
            </GridView>
        </ListView.View>
        <ListView.DataContext>
            <Classes:Library/>
        </ListView.DataContext>
        <Classes:Library Text=""/>
    </ListView>