У меня есть программа, которая должна отображать файлы в виде списка.
Мой код выглядит следующим образом, и я получаю сообщение об ошибке «не могу преобразовать строку в viewmodel». Если я изменяю Additem (movies.MovieName) на Additem (movies), я не получаю сообщение об ошибке, а выводит только «MoviePlayerModule.ViewModelsMoviesViewModel».
Я хочу, чтобы он записал имя файла, которое он получает из movies.MovieName = filename;
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.
Класс ViewModel:
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));
}