| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Изображения в локализованном ресурсе |
| Автор: Compositum 25.3.2010, 12:25 |
| Разбираюсь с локализацией по статьям http://habrahabr.ru/blogs/net/86778/ и http://www.codeproject.com/kb/WPF/WPFUsingLocbaml.aspx. Изучил первую статью, попробовал - получается. Но... Локализовывать может потребоваться не только текстовую часть GUI, но и др. тип информации - например изображения. Предположим, что у меня в окне должен отображаться флаг страны, чья локализация является текущей. Для этого в файл Resources.resx я добавил нужный мне файл изображения, и в его свойствах задал Name = flag и Persistence = Embedded in .resx. Теперь хочу в XAML-разметке окна сослаться на этот ресурс. Как это правильно сделать? У меня не получается выполнить это и из кода: ![]() Из скрина видно, что поток (объект ms) не равен null, однако pngImg.StreamSource равен null, хотя я присвоил ему значение ms. Что я не верно сделал? |
| Автор: Compositum 25.3.2010, 13:07 | ||||||
В общем из кода нужно делать как-то так (это ежели кому интересно):
Так же на тему багов BitmapImage.StreamSource можно прочитать https://connect.microsoft.com/VisualStudio/feedback/details/318931/bitmapimage-streamsource-with-jpeg-source А можно ли выполнить привязку из XAML- разметки? И ещё момент: если xaml-описание такое:
То изображение флажка такое: ![]() Однако если убрать значение Height:
то получаю такую штуку: ![]() Я хочу, чтобы размер изображения автоматически подстраивался под размер png-источника. |
| Автор: Compositum 26.3.2010, 11:00 | ||
можно конечно сделать так:
т.е. указать размеры принудительно в коде, но млин, по прежнему хочется в xaml-разметке привязку слепить. сейчас попробую конвертер слепить и через него выполнить. |
| Автор: Compositum 26.3.2010, 13:50 | ||||||||||||
Написал простенький конвертер:
Подправил программный код конструктора окна:
В этом случае всё будет работать как надо: появляется окошко с изображением локализованного флага, причём флаг имеет реальные размеры изображения. Т.е. всё пучком... Но... я ведь хочу всё это реализовать исключительно через разметку XAML... А значит вышеуказанный фрагмент кода откладываю в сторону... В ресурсах приложения прописываю конвертер:
Подправил xaml-код, касающийся Image (указал привязки, чтобы изображение не раздувалось на всё окно, а так же прописал привязку источника изображения (свойство Source):
В результате получаю ошибки:
В принципе, я понимаю в чём тут ошибка - указан res:Resources, а xaml ожидает получить не просто класс, а статический объект, т.е. в моём случае это должно быть res:Resources.flag. Но тогда получается, что я уже непосредственно указываю на то свойство, которое мне нужно и в параметр Path мне уже нечего передавать... Я пробовал такой вариант:
никаких ошибок не возникает, но и никакого флага в окошке не появляется... |