我有這樣一個靜態的Command類(但有更多的命令):工作需要,各地的覆蓋RoutedUICommand.Text財產
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方法中調用字典。但是Text屬性不是虛擬的,它也不是它所調用的GetText()方法。
我唯一能想到的是在這個類中提供了一個靜態初始化方法,它可以轉換所有的字典密鑰。但是,這是不是很乾淨,恕我直言,因爲我不得不再次命名的每一個命令這樣
addInterface.Text = DictTable.getInst().getText(addInterface.Text);
,如果我忘了一個名字,也不會有錯誤,只是沒有翻譯。 我甚至不喜歡這個,我必須在這個類中命名兩次,並再次在XAML命令綁定中命名。
你有什麼想法可以更優雅地解決這個問題嗎?
我很喜歡RoutedUICommands,但是就像這樣,它們對我來說是無用的。爲什麼微軟不能更頻繁地添加「虛擬」這個小詞? (或使它像JAVA默認?!)
爲什麼不把命令的構造(addinterface = ..)移動到addInterface命令的getter? 你也應該避免構建可能永遠不會被調用的命令.. – SvenG
看起來非常有希望,代碼看起來很棒,但不起作用,因爲每次命令被請求時都會創建一個新實例。我的按鈕不再可點擊:(我可以緩存它,但它主要是我以前的代碼。 – JCH2k
看起來像你的DictTable是一個Sigleton?爲什麼不把這個類初始化? – Kolja