2010-11-23 46 views
0

當我按下Alt + S時,此MenuItem不會切換到檢查狀態,爲什麼?在MenuItem的IsCheckable =「True」中綁定鍵的問題,爲什麼?

<Menu> 
    <MenuItem Header="_Other"> 
     <MenuItem 
      Header="_Show Expanded Names ?" 
      IsCheckable="True" 
      StaysOpenOnClick="True" 
      InputGestureText="Alt+S" 
      IsChecked="{Binding ShowExpandedName}" /> 
    </MenuItem> 
</Menu> 

注意:ShowExpandedName在DataContext中定義如下。當我用鼠標點擊它時,MenuItem被正確檢查。

bool _ShowExpandedName; 
public bool ShowExpandedName 
{ 
    get { return _ShowExpandedName; } 
    set 
      { 
       if (value != _ShowExpandedName) 
       { 
        _ShowExpandedName = value; 
        this.NotifyPropertyChanged("ShowExpandedName"); 
       } 
      } 
} 

回答

0

「_」技巧應該適用於可見的菜單項。在這種情況下,我必須首先使用Alt-O打開「_Other」子菜單,然後按S選擇項目「顯示擴展的名稱?」。 我想這是道德,使用「」是不一樣的加一個鍵綁定到命令本身!

0

你需要ShowExpandedName一個DependencyProperty,使得其價值的變化報告給菜單項

看到有:

http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx

+0

對不起,我忘了解釋ShowExpandedName是NotifyPropertyChange。我編輯了我的問題來澄清這一點。 – Nestor 2010-11-23 13:31:42

+0

啊...好吧然後:第。現在,在您對Alt + S的治療中,您是否有機會直接更改_ShowExpandedName變量?這將繞過通知,因此你的行爲。更好地使用Set()函數 – David 2010-11-23 13:36:06