C# 查看列表中的所有文件

C# 查看列表中的所有文件,c#,wpf,caliburn.micro,C#,Wpf,Caliburn.micro,我正在从事一个在wpf C#中使用Caliburn micro的项目 我正在重写我的ReadMediaFile()方法,以便它在列表中显示文件夹中的所有文件 我的方法如下所示: private void ReadMediaFile() { string result; _movieviewmodel = new MoviesViewModel(); string[] filePaths = Directory.GetFiles(

我正在从事一个在wpf C#中使用Caliburn micro的项目

我正在重写我的ReadMediaFile()方法,以便它在列表中显示文件夹中的所有文件

我的方法如下所示:

     private void ReadMediaFile()
    {
        string result;
        _movieviewmodel = new MoviesViewModel();

        string[] filePaths = Directory.GetFiles(@"C:/Users/v80770/Desktop/Movies/");

        foreach (var file in filePaths)
        {
            result = Path.GetFileName(file);
            _movieviewmodel.MovieName = result;
        }
        AddItem(_movieviewmodel);
    }
调试程序时,所有文件都显示在文件路径中,但列表中只显示一个文件

AddItem位于一个名为TreeViewBase的类中(我认为属于caliburn micro),它看起来如下所示:

        public void AddItem(T item)
    {
        _dispatcher.SmartInvoke(() => Items.Add(item));
    }
我在列表中查看了电影文件,但视图中的MediaUri绑定是针对特定路径文件绑定的,但我希望它根据我的选择进行更改

我试图编辑与此的绑定:

string test = _movieviewmodel.MovieName;
MediaUri = new Uri(test);
但仅获取异常“System.UriFormatException:'无效URI:无法确定URI的格式”。”

新的Uri代码:

_movieviewmodel.MovieFilePath = @"C:/Users/v80770/Desktop/Movies/";

string test = _movieviewmodel.MovieFilePath;
MediaUri = new Uri(test + _movieviewmodel.MovieName);

但是它总是显示相同的电影和my _movieviewmodel.MovieName不会因我选择的电影而改变名称,它总是相同的电影。

创建MoviesViewModel项对象和添加项(_movieviewmodel)必须位于foreach内部,否则它将只添加最后一项:

foreach (var file in filePaths)
{
    var movieviewmodel = new MoviesViewModel();
    movieviewmodel.MovieName = Path.GetFileName(file);
    AddItem(movieviewmodel);
}


AddItem
调用放入
foreach
中假设您希望每个文件有一个MoviesViewModel实例,则需要移动
movieviewmodel=new MoviesViewModel()
附加项(_movieviewmodel)在foreach循环中。谢谢,它现在解决了。但我的Uri现在不起作用,请参见编辑问题。您正在尝试仅从文件名而不是其完整路径创建Uri。向MoviesViewModel类添加另一个属性,例如MovieFilePath,并将其用于Uri。
foreach (var file in filePaths)
{
    AddItem(new MoviesViewModel
    {
        MovieName = Path.GetFileName(file)
    });
}