无法隐式将字符串转换为视图模型



我有一个程序应该在列表视图中显示文件。 我的代码看起来像这样,如果我更改 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" .... />

相关内容

  • 没有找到相关文章