C# 列表框未使用绑定进行填充

C# 列表框未使用绑定进行填充,c#,wpf,xaml,mvvm,listbox,C#,Wpf,Xaml,Mvvm,Listbox,我正在尝试使用mvvm模式在c wpf中转换现有程序 第一部分是选择要处理的文件的文件夹位置并填充列表框 public partial class FilesListView : UserControl { public FilesListView() { DataContext = new OpenFileDialogVM(); InitializeComponent(); } }

我正在尝试使用mvvm模式在c wpf中转换现有程序

第一部分是选择要处理的文件的文件夹位置并填充列表框

public partial class FilesListView : UserControl
    {
        public FilesListView()
        {
            DataContext = new OpenFileDialogVM();
            InitializeComponent();

        }
    }
我在这里找到了一个使用Mvvm Light的示例:

上面链接中的示例是选择文件夹

这是我项目的结构

这是我的FileListView.xaml的代码

<UserControl x:Class="MvvmLight1.Views.FilesListView"
             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" 
             xmlns:local="clr-namespace:MvvmLight1.Views"
             mc:Ignorable="d" 
             d:DesignHeight="300" Width="730.029">

    <Grid>
        <ListBox ItemsSource="{Binding FileNames}" Margin="5,5,5,5"/>

    </Grid>
</UserControl>
我上面的代码有什么问题

代码更新:

在我的文件夹结构中有ViewModel文件夹,其中有OpenFileDialogVm.css

但是为什么IDE只识别ViewModelLocator呢

我甚至建立了这个项目

我甚至在FileListView用户控件的CodeBehind中设置了DataContext,但它仍然没有填充listbox

public partial class FilesListView : UserControl
    {
        public FilesListView()
        {
            DataContext = new OpenFileDialogVM();
            InitializeComponent();

        }
    }

将其添加到用户控件:

<UserControl
.....
xmlns:viemodels="clr-namespace:MvvmLight1.ViewModels"
/>
    <UserControl.DataContext>
        <viemodels:OpenFileDialogVM/>
    </UserControl.DataContext>
....
</UserControl>

在哪里设置FileListView的DataContext?什么不起作用?files变量没有填充还是ListBox没有填充?@Rekshino我没有设置它。我需要在哪里设置它?。我甚至不知道我需要设置它。感谢you@sachin该变量已填充。我使用for循环及其工作方式在控制台中写入文件名。您需要了解DataContext在WPF中的工作方式。它流经可视树,这就是为什么您永远不希望从根目录(通常是窗口)将DataContext绑定到可视树本身{Binding RelativeSource={RelativeSource Self}}。但是如果没有设置,绑定将无法工作,因为没有任何可绑定的对象。您可以使用Snoop之类的工具在运行时检查DataContext和绑定。我尝试了您的代码,但它不起作用。IDE无法识别viemodels:OpenFileDialogVM。我甚至在代码中设置了数据内容。但它仍然没有填充列表框。谢谢,我不知道ViewModel类的确切名称和名称空间。该类必须具有公共修饰符,并且必须在视图项目中引用ViewModel项目。
<UserControl
.....
xmlns:viemodels="clr-namespace:MvvmLight1.ViewModels"
/>
    <UserControl.DataContext>
        <viemodels:OpenFileDialogVM/>
    </UserControl.DataContext>
....
</UserControl>