次のような静的 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 プロパティをオーバーライドして、get メソッドで dict を呼び出すことでした。しかし、Text プロパティは仮想ではなく、それが呼び出す GetText()-Method もそうではありません。
私が考えることができる唯一のことは、すべての辞書キーを変換するこのクラスで静的初期化メソッドを提供することです。しかし、このようにすべてのコマンドにもう一度名前を付ける必要があるため、これはあまりきれいではありません
addInterface.Text = DictTable.getInst().getText(addInterface.Text);
名前を付けるのを忘れても、エラーは発生せず、翻訳は行われません。このクラスでコマンドに 2 回名前を付け、XAML コマンドバインディングでもう一度名前を付ける必要があることさえ好きではありません。
これをよりエレガントに解決する方法はありますか?
私は RoutedUICommands が大好きですが、このように私には役に立ちません。Microsoft はなぜ「仮想」という小さな単語をもう少し頻繁に追加できなかったのでしょうか?? (または、JAVA のようにデフォルトにしますか?!)