在设计师看不到图像

时间:2015-11-03 11:26:18

标签: wpf visual-studio-2010 xaml mvvm

我有一个使用Binding显示一些图像的视图。它在运行时工作正常,但我无法在设计模式下看到图像(我使用假的ViewModel作为DataContext)。

public class DesignTimeData
{
    public string ImageSource { get { return "/WpfApplication1;component/banner.png"; } }
}

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        xmlns:local="clr-namespace:WpfApplication1"
        d:DataContext="{d:DesignInstance local:DesignTimeData, IsDesignTimeCreatable=True}"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <Image Source="{Binding ImageSource}" />
    </StackPanel>
</Window>

奇怪的是,这不起作用:

<Image Source="{Binding ImageSource}" />

但这样做:

<Control>
    <Control.Template>
        <ControlTemplate>
            <Image Source="{Binding ImageSource}" />
        </ControlTemplate>
    </Control.Template>
</Control>

我错过了什么吗? 这是VS2010的设计师的错误吗? 我能做些什么来解决这个问题(除了使用丑陋的ControlTemplate技巧)?

1 个答案:

答案 0 :(得分:3)

设计人员似乎遇到了部分WPF包URI的问题。

使用完整的Resource File Pack URI

public string ImageSource
{
    get { return "pack://application:,,,/WpfApplication1;component/banner.png"; }
}

或者只是图像文件名:

public string ImageSource
{
    get { return "banner.png"; }
}