Приложение Silverlight 4 MVVM, редактирование resx пользователем, только Blend? - PullRequest
1 голос
/ 04 февраля 2011

В приложении Silverlight 4 наша пользовательская база должна определить для нас, какой контент они хотят для кнопок, надписей, различного текста на экране и т. Д. Я понимаю методы файлов ресурсов, но мне интересно, когда нужноПредоставьте пользователям такой контроль над определением текста в файле ресурсов. Как лучше всего позволить им сделать это таким образом, чтобы они могли просматривать свои изменения на страницах XAML?Нужно ли им устанавливать Blend?

Я смутно помню, когда делал приложение WinForms, в какой-то момент я передал пользователям реальную winform, и они использовали своего рода визуальный дизайнер для редактирования текста кнопок, надписей.и т. д., и эти изменения были затем сохранены в файле ресурсов.

Наше приложение - MVVM, поэтому каждый элемент в XAML будет привязан к свойству в своей модели представления, и это свойство затем загрузит записьиз файла ресурсов.

Если есть способ позволить пользователю обновлять содержимое файла resx при визуальном рассмотрении его изменений, пожалуйста, дайте мне знать.

Большое спасибо заранее за любыепомощь.

1 Ответ

0 голосов
/ 31 декабря 2012

В прошлом я занимался выделением сборок для файлов ресурсов (resx).По умолчанию они «встроены» в сборку.Хитрость заключается в том, чтобы изменить свойство файла resx, чтобы оно НЕ было встроено (False).Таким образом, файлы представляют собой отдельные файлы resx xml, которые должны идти вместе со сборкой (и находиться в том же каталоге / bin запущенного приложения).Это то, что вы видите в некоторых каталогах / bin с / en-US / и другими ресурсами.В прошлом я создавал простой графический интерфейс для пользователей, чтобы иметь возможность редактировать эти файлы resx, которые записываются обратно на диск.Я не знаком с внутренней работой Silverlight для этого типа необходимых разрешений, но я бы подумал, что в худшем случае отредактированные файлы resx просто загружаются на сервер, где новая копия загружается при следующем перезапуске приложения или тому подобное.

Теперь, когда я сказал «в прошлом», это было в 2003 году.Недавно мне пришлось делать это вручную, используя ResXResourceReader из-за существующей сборки, которую я не мог изменить.

Пример кода (запись из памяти, полностью непроверенная):

using (var reader = new ResXResourceReader("[path-to-bin]/MyResources.resx"))
{
  var value = reader["My_key_in_the_resx_file"].ToString;
}

Обратите внимание, что, пройдя этот маршрут, вы получите доступ к другим типам ресурсов, таким как двоичные файлы и файлывстроенные в него файлы resx.

Наконец, следите за форматами кодирования.Некоторые зарубежные редакторы используют UTF16.Поэтому может потребоваться использование обычного конвертера Unicode.

Также обратите внимание, что существует класс ResXResourceWriter, если вы хотите использовать собственные программы записи для обновления файлов resx с помощью кода.

...