使用 IsCheckable="True" 綁定 MenuItem 中的鍵時出現問題,為什麼? (Problems binding keys in MenuItem's with IsCheckable="True", why?)


問題描述

使用 IsCheckable="True" 綁定 MenuItem 中的鍵時出現問題,為什麼? (Problems binding keys in MenuItem's with IsCheckable="True", why?)

當我按 Alt+S 時,這個 MenuItem 沒有切換到選中狀態,為什麼?

<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");
              }
          }
}

## 參考解法 #### 方法 1:

you need to make ShowExpandedName a dependencyProperty so that the change in its value is reported to the menuItem

see there:

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

方法 2:

I think I found:

http://msdn.microsoft.com/en‑en/library/system.windows.controls.menuitem.inputgesturetext%28VS.85%29.aspx

Notes

This property does not associate the input gesture with the menu item it simply adds text to the menu item. For information on how to associate a command with a menu item see: Command.

方法 3:

The "_" trick is supposed to work on visible menu items. In this case I'd have to do Alt‑O first to open the "_Other" submenu and then press S to choose the item "Show Expanded Names ?". I guess the moral of this is that using "" is not the same as adding a key binding to the command itself!

(by NestorDavidDavidNestor)

參考文件

  1. Problems binding keys in MenuItem's with IsCheckable="True", why? (CC BY‑SA 3.0/4.0)

#wpf






相關問題

usercontrol wpf 靜態內存 (usercontrol wpf static memory)

將圖像加載到面板 (Load image to panel)

我的 WPF 自定義控件的數據上下文正在取代父級的 (My WPF custom control's Data Context is superseding parent's)

是否可以更改 WPF 控件的父級 (Is it possible to change parent of WPF control)

WPF MVVM 鏈接視圖 (WPF MVVM Linked Views)

wpf 樹視圖 mvvm (wpf treeview mvvm)

應用啟動後更改應用圖標 (Change application icon after app launched)

在VB中過濾一個wpf collectionviewsource? (Filter a wpf collectionviewsource in VB?)

如何使 DockPanel 中的項目擴展以適應 WPF 中的所有可用空間? (How to make items in a DockPanel expand to fit all available space in WPF?)

使用 IsCheckable="True" 綁定 MenuItem 中的鍵時出現問題,為什麼? (Problems binding keys in MenuItem's with IsCheckable="True", why?)

如何將文本框的borderBrush屬性綁定到viewmodel中的屬性,類型轉換錯誤 (How to bind the borderBrush property of a textbox to a property in viewmodel, type conversion error)

Painter 應用程序的自定義控件以顯示不同的橡皮擦 (Custom Control for Painter application to show different erasers)







留言討論