今天在编写一个简单的应用程序,根据他们的艺术家和专辑将音乐放到文件夹时,我遇到了令我惊讶的事情。
我只使用ListView显示文件到我的信息:
<Grid Margin="10" MaxHeight="300">
<ListView ItemsSource="{Binding MusicList}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.View>
<GridView>
<GridViewColumn Header="File Name" DisplayMemberBinding="{Binding FileName}" Width="250"/>
<GridViewColumn Header="Artist" DisplayMemberBinding="{Binding TagHandler.Artist}" Width="150"/>
<GridViewColumn Header="Album" DisplayMemberBinding="{Binding TagHandler.Album}" Width="150"/>
<GridViewColumn Header="Title" DisplayMemberBinding="{Binding TagHandler.Title}" Width="200"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
MusicList是在库“Mp3Lib”的帮助下创建的数组,它就像这样
public Mp3Lib.Mp3File[] MusicList
{
get { return musicList; }
private set
{
musicList = value;
OnPropertyChanged("MusicList");
}
}
private Mp3Lib.Mp3File[] musicList;
列表视图本身绑定到MusicList,而艺术家,专辑和标题绑定到TagHandler.Artist等等。 TagHandler直接来自MusicList,这绝对有道理。
我的问题是关于这个FileName。说实话,我只是偶然地把它放在那里,打算用这个名字创建一些属性,或者其他什么,但我没有。当我开始编程时,我惊讶地发现列中填充了完整的文件目录,其名称如下:
我不知道的是FileName属性来自何处,是否有任何类似的属性我可以使用?我想再次说我没有这个名字的属性,也没有MusicList有。
如果有人对此有所了解,我将不胜感激。
答案 0 :(得分:2)
FileName
是Mp3Lib.Mp3File
而不是MusicList
的属性,这些绑定不是集合,而是属于集合中订单项的属性。