我正在尝试在Visual Studio 2013中创建一个带有ImageBrush背景的非常简单的窗口,作为更复杂项目的测试。图像显示在设计器中,但程序在启动时崩溃。这是XAML:
<Window x:Class="BackgroundTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="grid1">
<Grid.Background>
<ImageBrush ImageSource="/Images\Koala.jpg" Stretch="Fill"/>
</Grid.Background>
</Grid>
</Window>
基本上是空的C#(就像我说的,只是一个测试):
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace BackgroundTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
我很肯定它与ImageBrush有关,如果我删除XAML的那部分,程序将按预期运行一个空白窗口。任何人都可以帮助我开始运行吗?
这是调试输出: PresentationFramework.dll中出现“System.Windows.Markup.XamlParseException”类型的第一次机会异常
其他信息:'为'System.Windows.Baml2006.TypeConverterMarkupExtension'提供价值引发异常。行号'7'和行位置'14'。
答案 0 :(得分:1)
您的图片的构建操作可能设置为内容。将其更改为资源。
答案 1 :(得分:1)
知道了!我通过右键单击解决方案资源管理器中的解决方案名称将图像添加到程序的资源中 - &gt;属性 - &gt;资源 - &gt;添加资源 - &gt;添加现有文件并选择考拉的图片。我将XAML中的代码更改为:
ImageSource="Resources/Koala.jpg"
根据Eric的建议,我点击了解决方案资源管理器中的资源,确定图片已经存在,我能够将构建操作更改为资源。之后,它完美地工作,感谢Eric!一旦我有足够的声誉,我会立即检查你的答案。我是堆栈溢出的新手。
答案 2 :(得分:0)
您的图片来源中有反斜杠......
假设Images
是解决方案中的文件夹,您的图片来源应为:
Source="../Images/Koala.jpg"
甚至更好:
Source="pack://application:,,,/Images/Koala.jpg"