Добавление изображения F # - PullRequest
3 голосов
/ 09 марта 2011

У меня есть панель стека, к которой я хочу динамически добавлять некоторые значки.

Если я добавлю TextBlock на панель стека, он отлично работает:

// assuming stackPanel is my stack panel
let text = new TextBlock()
text.Text <- "Test"
stackPanel.Children.add(text)

Однако мойцель состоит в том, чтобы добавить изображение, но кажется, что оно не может разрешить изображение

let getImageSource(imagePath) = 
    let uri = new Uri(imagePath, UriKind.Relative)
    new BitmapImage(uri); 

let icon = new Image()
icon.Source <- getImageSource("images/fileIcon/icon.gif")

stackPanel.Children.Add(icon) // this doesnt work

, теперь, когда я делаю:как будто там есть пустое изображение.Так что я думаю, что что-то не так с тем, как я разрешаю путь к изображению, но я не уверен, почему.

Мысли?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 09 марта 2011

В случае, если Build Action вашего gif-файла является Resource, то правильным способом для его решения будет /SilverlightApplication1;component/path/to/file.gif.Здесь SilverlightApplication1 - это имя вашего приложения Silverlight

. Если Build Action - это Content, то его правильный адрес - /path/to/file.gif, всегда с косой чертой при создании BitmapImage.

.Ознакомьтесь с Silverlight 2. Демистификация ссылок URI для ресурсов приложения для получения дополнительной информации.

Для упрощения отладки проблем с загрузкой изображений, подключитесь к событию BitmapImage.ImageFailed и посмотрите, какие ошибки возникают..

Последнее замечание: AFAIK Silverlight не поддерживает формат GIF.Вместо этого вы можете использовать PNG.

0 голосов
/ 09 марта 2011

Вы можете попробовать следующий Uri, если у вас приложение WPF.

let uri = Uri("pack://application:,,,/asm_name;component/images/fileIcon/icon.gif")

asm_name необходимо заменить на ваше фактическое имя сборки.

если вы работаете с приложением Silverlight, вам нужно изменить URI следующим образом. Предполагая, что действие по сборке icon.gif - Resource.

let uri = Uri("../images/fileIcon/icon.gif", UriKind.Relative)

Надеюсь, это поможет.

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