Укажите источник изображения - PullRequest
1 голос
/ 04 января 2012

У меня был следующий очень простой код, который, конечно, работал:

<Image Source="Resources\data_store.png"/>

Дело в том, что теперь мне нужно взять строку из свойства ("name") объекта, которыйданный как ItemSource, и мне не удается связать его

Я пробовал это, но ни одна из них не работает:

<Image Source=name/>
<Image Source=Path="name"/>
<Image Source=Path=name/>
<Image Source={Path="name"}/>
<Image Source={Path=name}/>
<Image Source={Binding name}/>

Мой объект установлен в коде c #, и я не думаю, что эточто-то меняет ...

Ответы [ 2 ]

2 голосов
/ 04 января 2012

В приведенном ниже коде убедитесь, что вы определили источник как свойство:

public string Name{get;set;}

тогда привязка работает следующим образом:

<Image Source="{Binding Name, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" />

Если вы хотите динамически обновить изображение, вам нужно будет реализовать INotifyPropertyChanged и вызывать PropertyChanged при изменении изображения

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

Анализатор XAML довольно умен, когда сталкивается:

<Image Source="Resources\data_store.png"/>

Он знает, что свойство Source имеет значение ImageSource и будет использовать подходящий конвертер для загрузки указанного ресурса.Если вам нужно установить источник изображения в коде или через привязку, вам нужно сделать это самостоятельно с помощью преобразователя значений.Следующий конвертер значений сделает свое дело:

public classImageUriConverter : IValueConverter
{
    publicImageUriConverter()
    {
    }

    public objectConvert(objectvalue, TypetargetType, objectparameter, System.Globalization.CultureInfo culture)
    {
       Urisource = (Uri)value;
        return newBitmapImage(source);
    }

    public objectConvertBack(objectvalue, TypetargetType, objectparameter, System.Globalization.CultureInfo culture)
    {
        throw newNotImplementedException();
    }

 }

Предоставлено этого сообщения в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...