привязка источника изображения в XAML - PullRequest
8 голосов
/ 29 июля 2010

Я пытаюсь привязать источник изображения к моему XAML через c #

это работает

<Image Source="images/man.jpg"></Image>

это не работает

<Image Source="images/{Binding imagesource}"></Image>

где imagesource - строковая переменная в файле c # этого xaml и устанавливается равной "man.jpg"

Ответы [ 4 ]

3 голосов
/ 29 июля 2010

Вы не можете придерживаться привязки в середине этого значения. Это либо обязательный, либо нет. Предполагая, что источник изображений общедоступен через ваш DataContext, вы можете сделать это:

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

Однако, если для него установлено значение «man.jpg», изображение не будет найдено. Либо установите для imagesource полный путь («images / man.jpg»), либо используйте конвертер:

<Image Source="{Binding imagesource, Converter={StaticResource RelativePathConverter}}"/>

Преобразователь добавит «images /» к своему значению. Однако может потребоваться, чтобы преобразователь возвратил ImageSource, а не string.

3 голосов
/ 12 мая 2011

вот как это сделать в XAML:

добавить это в пространство имен:

xmlns:System="clr-namespace:System;assembly=mscorlib"

, затем добавить пути к изображениям

<System:String x:Key="ImageRefresh">/Theme;component/Images/icon_refresh.png</System:String>
<System:String x:Key="ImageSearch">/Theme;component/Images/icon_search.png</System:String>

Этоэто то, как вы его используете

<Image Height="16" Source="{StaticResource ImageSearch}" Stretch="Uniform" Width="16"/>

Это работает нормально, но если вы загрузите свой стиль xaml в Blend, он станет поддельным.

Объект типа "System.String" не может бытьприменяется к свойству, которое ожидает тип "System.Windows.Media.ImageSource".

Я еще не выяснил, как заменить System: String на этот Media.ImageSource ... но эй ..у меня это работает в Visual Studio.

1 голос
/ 05 января 2012

Изображения укусили меня в прошлом.Существует определенный порядок поиска.

Когда вы используете «image / man.jpg», он может ссылаться на файл внутри вашего xap silverlight или относительно расположения файла XAP.Например, это может быть в YourProject.Web / ClientBin / image / man.jpg.

Сначала следует устранить неполадки, используя полные URL, и выяснить, работает ли это.

0 голосов
/ 29 июля 2010

imagesource должен быть фактическим Image объектом, а не string.

Вот метод, который создаст новый Image объект с указанным путем:

public BitmapImage Load(string path)
{
    var uri = new Uri(path);
    return new BitmapImage(uri);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...