我的應用程序中有一個菜單直接從外部綁定的字符串列表中獲取其內容(ItemsSource = Settings.RecentlyLoadedFiles
)。這些字符串是文件名,當用戶點擊菜單中的某個項目時,該文件將被加載。禁用MenuItems的下劃線解釋
<ui:SplitButton
Grid.Column="0"
Command="{Binding LoadLogCommand}" ToolTip="Load log" ToolTipService.ShowOnDisabled="True"
Focusable="False"
ItemsSource="{Binding Settings.RecentlyLoadedFiles}"
MenuItem.Click="SplitButton_Click">
<ui:SplitButton.Icon>
<ui:MenuIconImage Source="/Images/folder_open.png"/>
</ui:SplitButton.Icon>
</ui:SplitButton>
現在文件名可以很容易地在他們的下劃線和WPF,因爲認爲它可能是一個快捷鍵,這是不顯示。不是。但我怎麼能告訴菜單?
有沒有簡單的方法來加倍這些下劃線來顯示其中之一。這份名單來自一個與此類事情無關的來源。
我是否需要編寫一個自定義轉換器將該列表轉換爲具有加倍下劃線的字符串列表才能禁用該功能?
或者我需要從某處爲菜單項複製整個模板,以在其中間的某個位置設置不同的特定屬性?
是不是有一些附加屬性或任何傳播到解釋將被完成的地方?
Duplicate http://stackoverflow.com/questions/19769398/how-do-i-disable-mnemonics-in-a-wpf-menuitem/32998315#32998315 –
有點解釋:'MenuItem'包含一個'ContentPresenter '在它的'ControlTemplate'中,'RecognizesAccessKey'設置爲'true'。我的觀察是,它所做的是檢測內容是什麼,如果它是一個包含_的字符串,則它將內容包裝在一個AccessText元素中,並將AccessKey設置爲下劃線後面的字符。我不知道有任何可能影響此功能的附加屬性。在ContentPresenter之後將'RecognizesAccessKey'改爲false也沒有效果。下面給出的答案是一個可能的解決方案。 –
@LonelyPixel - 你必須重寫默認的MenuItem模板,並將'RecongnizesAccessKey'設置爲'False',它應該可以工作。也許你可以在菜單資源中放置MenuItem的默認樣式,這樣你就不必爲所有菜單項顯式覆蓋。 –