按钮上设置图像源的XAML Parse异常

时间:2015-05-19 05:39:35

标签: wpf xaml

这是我的XAML代码

<Button HorizontalAlignment="Left" Margin="185,0,0,0" Width="20" BorderBrush="{x:Null}" ToolTip="Search" Foreground="#FFB9B9B9">
            <Button.Background>
                <ImageBrush Stretch="UniformToFill" ImageSource="../Images/gray-classic-search-icon.png"/>
            </Button.Background>
</Button>

这在运行项目中给出了这个错误:

  

类型的第一次机会异常   &#39; System.Windows.Markup.XamlParseException&#39;发生在   PresentationFramework.dll

     

其他信息:&#39;提供价值   &#39; System.Windows.Baml2006.TypeConverterMarkupExtension&#39;扔了一个   。例外&#39;行号&#39; 34&#39;和行位置&#39; 33&#39;。

造成这种情况的原因是什么?如何解决?

2 个答案:

答案 0 :(得分:1)

在WPF应用程序中加载来自相对路径的图像不是理想的方法,因为在运行时,图像文件需要位于恰好相对的位置,无论是..\Images\还是..\..\Images\

您应该将图像文件的构建操作设置为Resource(如图here所示)并加载它:

<ImageBrush ImageSource="/Images/gray-classic-search-icon.png" .../>

这是WPF Resource File Pack Uri的缩写形式:

<ImageBrush ImageSource="pack://application:,,,/Images/gray-classic-search-icon.png" .../>

答案 1 :(得分:0)

更改您的代码

<Button HorizontalAlignment="Left" Margin="185,0,0,0" Width="20" BorderBrush="{x:Null}" ToolTip="Search" Foreground="#FFB9B9B9">
            <Button.Background>
                <ImageBrush Stretch="UniformToFill" ImageSource="../../Images/gray-classic-search-icon.png"/>
            </Button.Background>
        </Button>