我在Wpf应用程序中设置图像源时遇到问题.我有一个Image,其中源绑定到DataContext对象的SourceUri属性,如下所示:
<Image Source="{Binding SourceUri}"></Image>
Run Code Online (Sandbox Code Playgroud)
现在,我不知道在我的对象的SourceUri属性上设置什么.设置完整的绝对路径("c:/etc/image.jpg")它显示得很好,但显然我想设置相对路径.我的图像存储在与我的应用程序文件夹位于同一文件夹中的文件夹中.最后这些图像可能来自任何地方,因此将它们添加到项目中确实不是一种选择.
我已经尝试了相对于应用程序文件夹的路径,并且相对于工作路径(debug-folder).还尝试使用"pack:// .."语法,但没有运气,但请注意,这不是任何一点.
关于我应该尝试的任何提示?
我正在尝试使用本地资源在Button中放置一个图标.(C#Visual Studio 2012)
直接在我的项目中,我有一个名为"Resources"的文件夹,其中包含"Icons/MyIcon.png"
以下代码有效(但不使用相对路径)
<Button Width="20" Height="20">
<Button.Background>
<ImageBrush ImageSource="C:\Documents\MyProject\Resources\Icons\MyIcon.png">
</ImageBrush>
</Button.Background>
Run Code Online (Sandbox Code Playgroud)
但是,我希望它使用相对路径...所以我尝试了以下
<ImageBrush ImageSource="..\MyProject\Resources\Icons\MyIcon.png">
Run Code Online (Sandbox Code Playgroud)
它编译,但然后给我错误:
{"Cannot locate resource 'myproject/resources/icons/myicon.png'."}
Run Code Online (Sandbox Code Playgroud)
然后我发现了一篇文章,谈到引用该项目,并说:
"/[ assembly name ];component[ path within the project ]"
Run Code Online (Sandbox Code Playgroud)
所以我试过了:
<ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon.png">
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
它会出现在GUI-Builder中...但是当我真正尝试"调试"代码时......它无法运行.
如果我通过添加'123'来改变路径,例如:
<ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon123.png">
Run Code Online (Sandbox Code Playgroud)
我得到一个预编译错误:"找不到指定的文件".一旦我删除'123',错误就会消失.并再次在图表中显示图标.但当我跑...我仍然得到:
{"Cannot locate resource 'resources/icons/myicon.png'."}
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?为什么它只能在运行之前找到资源?而不是当我真正开始?