Локализация WPF-приложений на основе MVVM

Можно сделать редкий контроль :

svn co url/to/repo mywc --depth=files

, который получит Вас туалет только с файлами в нем, никакими подпапками. Можно теперь получить все папки, которые Вы хотите с

svn up url/to/repo/subfolder1 --set-depth infinity 
svn up url/to/repo/subfolder2 --set-depth infinity 
svn up url/to/repo/subfolder3 --set-depth infinity 
...

8
задан bitbonk 25 August 2009 в 01:56
поделиться

5 ответов

WPF широко поддерживает локализацию . Возможно, вы сможете это использовать? К сожалению, я думаю, что изменить язык пользовательского интерфейса во время выполнения несколько сложно, и вам, вероятно, придется придумать свою собственную схему.

Кроме того, поскольку модель представления не зависит от пользовательского интерфейса, я не думаю, что хранить строки пользовательского интерфейса в view-модели - хорошее решение. Они принадлежат воззрению.

9
ответ дан 3 November 2019 в 14:38
поделиться

Вот отличная статья о локализации WPF . Он имеет дело с техникой локализации, поддерживаемой Microsoft, и несколькими альтернативными

Я бы не рекомендовал "официальное" решение для локализации ... его действительно сложно использовать, он изменяет ваш XAML (добавляет атрибуты x: Uid к каждому элементу, который может быть локализован), и от MS нет хороших инструментов, чтобы сделать это простым решением. Старая добрая локализация resx намного проще в использовании и довольно хорошо интегрируется с WPF с помощью всего лишь нескольких приемов (а именно, расширений разметки и / или прикрепленных свойств). Кроме того, вы можете легко изменить язык интерфейса во время выполнения благодаря системе привязки.

9
ответ дан 3 November 2019 в 14:38
поделиться

Вместо того, чтобы иметь строки пользовательского интерфейса в вашей модели представления, вы можете сохранить их в ресурсах сборки и получить к ним доступ непосредственно из XAML, используя x: Static :

<TextBlock Text="{x:Static props:Resources.MyLabel}"/>

Пространство имен props должно ссылаться на пространство имен Properties вашей сборки:

xmlns:props="clr-namespace:My.Assembly.Properties"
6
ответ дан 3 November 2019 в 14:38
поделиться

Вы можете использовать расширение настраиваемой разметки для поиска локализованных значений и обновления их при изменении культуры пользовательского интерфейса.

Вот пример того, как это может работать:

<Label x:Name="lblResxHelloWorldMarkupExtension1Value" 
Content="{res:Res Id=HelloWorld,Default=Hello#}" 
Margin="{res:Res Id=HelloWorldMargin,Default=10}" 
Width="{res:Res Id=HelloWorldWidth, 
ResourceSet=WpfClickOnce.MyFormRes, Default=50}" />

Этот пример взят из отличного руководства по локализации WPF, авторами которого являются Рик Страл и Мишель Леру Бустаманте, здесь: http://wpflocalization.codeplex.com/ . Загрузите руководство с этого сайта, где этот метод подробно описан в форме документа и с примером приложения.

Еще одно приятное преимущество этого подхода - то, что он работает в дизайнере.

1
ответ дан 3 November 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: