2015-11-03 2 views
1

У меня есть представление, которое отображает изображение с использованием привязки. Он отлично работает во время выполнения, но я не вижу изображение в режиме разработки (я использую поддельную 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 трюка)?

ответ

3

У дизайнера, похоже, есть проблема с частичным URI WPF Pack.

Либо использовать полный Resource File Pack URI:

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

Или только имя файла изображения:

public string ImageSource 
{ 
    get { return "banner.png"; } 
} 
Смежные вопросы