У меня есть статический класс Command, подобный этому (но со многими другими командами):
class GuiCommands
{
static GuiCommands()
{
addInterface = new RoutedUICommand(DictTable.getInst().getText("gui.addInterface"), "addInterface", typeof(GuiCommands));
removeInterface = new RoutedUICommand(DictTable.getInst().getText("gui.removeInterface"), "removeInterface", typeof(GuiCommands));
}
public static RoutedUICommand addInterface { get; private set; }
public static RoutedUICommand removeInterface { get; private set; }
}
Он должен использовать мой словарь для получения текстов на правильном языке, который не работает, потому что мойсловарь не инициализируется при выполнении статического конструктора.
Моя первая попытка состояла в том, чтобы создать новый командный класс, производный от RoutedUICommand, переопределить свойство Text и вызвать dict в методе get.Но свойство Text не является виртуальным, как и метод GetText (), который он вызывает.
Единственное, о чем я могу подумать, - это обеспечить статический метод инициализации в этом классе, который транслирует все дикт-ключи.Но это не очень понятно, ИМХО, потому что я должен назвать каждую команду еще раз так:
addInterface.Text = DictTable.getInst().getText(addInterface.Text);
, и если я забуду назвать одну, ошибки не будет, просто нет перевода.Мне даже не нравится, что мне приходится называть команду дважды в этом классе и еще раз в привязках команд XAML.
У вас есть идеи, как это можно решить более элегантно?
Мне очень нравятся команды RoutedUIC, но они мне бесполезны.Почему Microsoft не может добавить слово «виртуальный» чуть чаще ??(или сделать его по умолчанию, как это делает JAVA?!)