我有一个程序应该在列表视图中显示文件。 我的代码看起来像这样,如果我更改 Additem(电影。电影名称)到添加项(电影)我没有收到错误,但它只写出"电影播放器模块.视图模型电影视图模型。 我希望它写下从电影中获得的文件名。电影名称 = 文件名;
private void ReadMediaFile()
{
var movies = new MoviesViewModel();
string[] files = Directory.GetFiles(Paths.Root);
foreach (var file in files)
{
var filename = Path.GetFileName(file);
movies.MovieName = filename;
};
AddItem(movies.MovieName);
}
在文件名中,它说:"ATTV_bog.mpg",这是文件夹中的 mpg 文件。
如果我更改代码,它看起来像这样:
var moviee = new MoviesViewModel();
string[] files = Directory.GetFiles(@"C:/Users/v80770/Desktop/Movies");
foreach (var file in files)
{
var filename = file;
moviee.MovieName = filename;
};
AddItem(moviee);
输出只是MoviePlayer.ViewModels.MoviesViewModel
在我看来,代码是这样的:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock x:Name="MovieName" Grid.Column="0" />
</Grid>
我正在使用CaliburnMicro。
视图模型类:
public class MoviesViewModel : TreeViewNode<MoviesViewModel>
{
public string MovieName { get; set; }
}
视图:
<UserControl x:Class="ClassName.MovieplayerModule.Views.MoviesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock x:Name="MovieName" Grid.Column="0" />
</Grid>
和AddItem方法,位于TreeViewBase中.cs
public void AddItem(T item)
{
_dispatcher.SmartInvoke(() => Items.Add(item));
}
使用AddItem(moviee)
将实际的Movie
对象添加到ListView
,然后使用DisplayMemberPath
属性指定要显示MovieName
属性的值:
<ListView ... DisplayMemberPath="MovieName" .... />