![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Сделал глобализацию приложения по опыту: http://jachman.wordpress.com/2009/06/10/ho...-the-smart-way/
С небольшими правками, но в целом, то же самое. Вопрос, как реализовать смену интерфейса на лету? Люди, если есть опыт переключения языка интерфейса подскажите, как это сделать. Возможно опыт WPF тоже подойдет, но не уверен. Везде советуют INotifyPropertyChanged реализовать. И примеры даже есть. Но что то не получается у меня, не переключается язык. Любая помощь пригодиться. |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 3 Всего: 170 |
я бы сделал так
-------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Я так понял, автор хранит слабые ссылки на все объекты которые запрашивали локализированные строки.
А потом по сигналу проходит по списку со слабыми ссылками и если те живы, заставляет их взять новый контент. Что-то сильно прям, наворочено так. Боюсь не смогу это в сильверлайт засунуть. Я тут INotifyPropertyChanged осилить не могу, а этот подход, вообще монстрообразный. Может есть способ, в силверлайте заставить все контролы сделать рефреш? Чтобы они в принудительном порядке запросили новое значение контента? |
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 3 Всего: 170 |
Да нет, внутри все гораздо проще. )
Просто все свойства контролов, подлежащие локализации (текстовые, скажем) соединены через биндинг с определенным объектом. Объект при стартапе считывает из ресурсов значения, а контролы через биндинг их вытягивают. Каждый - свое значение. При поступлении команды сменить локализацию объект инициализирует себя значениями новых ресурсов, при этом контролы через биндинги подтягивают себе эти новые значения. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
C вот этой вот частью проблема. Все остальное вроде работает, а как заставить контролы забрать новое значение - не могу понять. |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
а вариант с хранением всех строк в определённом ResourceDictionary и последующим референсом через DynamicResource не прокатывает для SL?
-------------------- СУВ, Partizan. |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
Как хранить строки это не принципиально. Можно хоть в текстовом файле, хоть в БД. У меня хранятся в ресурсах, но на самом деле это не так важно.
Есть главное приложение, и ряд окошек ChildWindow. Когда делаю смену языка, то главное окно не рефрешится. Но вот если вызвать дочернее окно, то оно уже будет на другом языке. Т.е. не порядок. После того как закрыли приложение и снова запустили - главное окно тоже на новом языке. Тут проблема не столько с локализацией сколько с тем чтобы принудительно заставить контролы главного окна запросить новые данные локализованных строк. Пока же приходится при смене языка делать рестарт приложения. |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 9 Всего: 67 |
dazy, ну вот я и спрашиваю - чем DynamicResource не подходит? в WPF на лету меняется всё. стоит только подменить ResourceDictionary.
-------------------- СУВ, Partizan. |
|||
|
||||
dazy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 15.9.2006 Репутация: 3 Всего: 8 |
DynamicResource в силверлайте нет. Есть реализация функционала через INotifyPropertyChanged. С ним у меня как раз проблемы.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |