我有一个使用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
技巧)?
答案 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"; }
}