WPF MVVM将映像从计算机上载到projectfolder,并将生成操作设置为资源

WPF MVVM将映像从计算机上载到projectfolder,并将生成操作设置为资源,wpf,mvvm,image-uploading,Wpf,Mvvm,Image Uploading,我可以将图像上载到windows资源管理器中的项目文件夹“图像”,但不能上载到项目“图像”文件夹中。(运行.exe并关闭Visual Studio时) 我想将图像复制到我的项目中,并将“构建操作”设置为“资源”,将“复制到输出”设置为“始终复制” 为什么?? 当我的程序(.exe)运行(而visual Studio未运行)时,我会在主窗口中显示图像。我有一个按钮“上传图像”。当用户上传图像时,它必须在主窗口中可见。图像以绑定方式显示。有人能帮我吗 主窗口:(工作正常…“Afbeelding”是图

我可以将图像上载到windows资源管理器中的项目文件夹“图像”,但不能上载到项目“图像”文件夹中。(运行.exe并关闭Visual Studio时)

我想将图像复制到我的项目中,并将“构建操作”设置为“资源”,将“复制到输出”设置为“始终复制”

为什么?? 当我的程序(.exe)运行(而visual Studio未运行)时,我会在主窗口中显示图像。我有一个按钮“上传图像”。当用户上传图像时,它必须在主窗口中可见。图像以绑定方式显示。有人能帮我吗

主窗口:(工作正常…“Afbeelding”是图像的名称,如“abc.jpg”)

现在我的“图像”地图中有了windows资源管理器中的图像…但我的项目中没有显示任何内容。并且该名称作为“Afbeelding”保存在数据库中,用于主窗口中的绑定。但什么也没有显示

包含已在“图像”文件夹中的图像的主窗口。最后是没有图像。这是我用上传按钮添加的。

这是上载图像按钮(“浏览”)

现在它位于windows资源管理器中,但未在主窗口中显示绑定

在重新启动Visual Studio之后。。。它不会出现在项目中:

图像以绑定方式显示,名称正确存储在数据库中


我做错了什么?谢谢

我终于找到了一个我想分享的解决方案。 首先,我更改了上传图像的位置。我现在将其上载到调试文件夹:

然后我将图像复制到该文件夹:

然后很难显示图像。 首先,我在ViewModel中定义了路径:

然后为图像源生成正确的字符串(路径+图像名称):


终于成功了!我希望它能帮助那些想在运行的程序中上传和使用图像的人。

构建操作就是……构建操作。编译应用程序后,无法在运行时设置任意文件的生成操作。是否要将图像文件添加到Visual Studio中的项目中?保罗·艾伯特,是的,这很有道理。Kirodge,是的,这是我尝试的,但不是当我在Visual Studio中时!当exe运行时,如果没有Visual Studio openedNote,则将生成操作设置为Resource和将复制到输出目录以进行复制总是没有意义的。前者旨在使映像文件成为程序集资源(以便资源文件包URI可以访问ist),而后者的目的只是将映像文件复制到构建目标目录,即写入可执行文件的目录(从定义的相对文件路径加载)。这是您可以在应用程序运行时轻松执行的操作。但是,最好从文件系统中某个位置的专用图像文件夹加载图像,即在
C:\ProgramData\\images
下,然后将新图像文件复制到该文件夹中。
<Button DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=MainWindowViewModel}" Command="{Binding AlgorithmActiefCommand}" CommandParameter="{Binding Content,  ElementName=ollId}" Background="Transparent" BorderBrush="Transparent" Style="{StaticResource ButtonAsImage}">
  <Image Source="{Binding Text, ElementName=image}"  MaxHeight="65" MaxWidth="65" />
</Button>
public void LoadImage()
{
//upload image
OpenFileDialog _importAfbeelding = new OpenFileDialog();
_importAfbeelding.Title = "Selecteer een afbeelding";

if (_importAfbeelding.ShowDialog() == true)
{
    var _afbeelding = new BitmapImage(new Uri(_importAfbeelding.FileName));
    ImportPath = _importAfbeelding.FileName;
    string[] _padGesplitst = _importPath.Split('\\');
    ImportNaam = _padGesplitst[(_padGesplitst.Length - 1)];
    string _destinationFullPath = System.AppDomain.CurrentDomain.BaseDirectory;
    DestinationPath = _destinationFullPath.Remove(_destinationFullPath.Length -10) + "images\\OLL\\"+ ImportNaam;
}
try
{
    File.Copy(ImportPath, this.DestinationPath, true);
    MessageBox.Show("Your images is added with name: " + ImportNaam);
}
catch
{
    MessageBox.Show("Unable to open file ");
}
}