2

我正在尝试在 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”。

4

3 回答 3

1

您的图像的构建操作可能设置为内容。改为将其更改为资源。

于 2014-01-23T01:33:55.433 回答
1

知道了!我通过在解决方案资源管理器中右键单击解决方案名称 -> 属性 -> 资源 -> 添加资源 -> 添加现有文件并选择考拉的图片,将图像添加到程序的资源中。我将 XAML 中的代码更改为:

ImageSource="Resources/Koala.jpg"

接受 Eric 的建议,我在解决方案资源管理器中单击了资源,果然图片在那里,我能够将构建操作更改为资源。之后它工作得很好,谢谢埃里克!一旦我有足够的声誉,我会检查你的答案。我对堆栈溢出相当陌生。

于 2014-01-23T01:49:34.297 回答
0

您的图像源中有反斜杠...

假设这Images是您的解决方案中的一个文件夹,您的图像源应该是:

Source="../Images/Koala.jpg"

甚至更好:

Source="pack://application:,,,/Images/Koala.jpg"
于 2014-01-23T00:11:12.593 回答