2017-11-03 9 views
0

Ok、最近のファイルメニューオプションがあります。 MVVMを使用してMenuItemエントリをデータバインドし、DisplayMemberPathを指定します。しかし、WPFはそう下線を我々はまた、カスタムテーマを持っていますが、MennuItemは https://github.com/AndersMalmgren/FreePIE/blob/recet_files_shortcut/FreePIE.GUI/Themes/ExpressionDark.xaml#L1921DisplayMemberPathによるデータバインディングはmenuitemのアンダースコアでエスケープします

を助けていないのスタイルを無効にするアクセスキー

enter image description here

<MenuItem x:Name="RecentScripts" DisplayMemberPath="Caption" Header="Recent _Files" cal:Message.Attach="OpenRecentScript($orignalsourcecontext)"> 
    <MenuItem.Icon> 
     <Image Source="{StaticResource IconOpen}"/> 
    </MenuItem.Icon> 
</MenuItem> 

https://github.com/AndersMalmgren/FreePIE/blob/recet_files_shortcut/FreePIE.GUI/Views/Main/Menu/MainMenuView.xaml#L35

として代わりにアンダースコアとして表示される文字列をエスケープ

+0

あなたは直接(.aspxのhttps://msdn.microsoft.com/en-us/library/system.windows.controls.accesstext(V = vs.110))[アクセステキスト]をバインドすることはできますか? ' <イメージソース= "{StaticResource IconOpen}"/> _0あなたはヘッダーテンプレートを指定する必要が ' – 3615

+1

とあなたの問題を解決するべき 'Label'を使用してください。理由は、デフォルトのテンプレートが 'TextBlock'を使用し、TextBlockがアンダースコアを使用しないためです。 – XAMlMAX

+0

しかし、同じテンプレートは、データバインドされていないメニューアイテムでは機能しません。スクリーンショットを見てください最近のファイルにはaccesstextがあります – Anders

答えて

2

DisplayMemberPathをItemTemplateに置き換えます。 here DisplayMemeberPathが

@XAMlMAXはラベルがないながらのTextBlockは、AccessTextをサポートしていません述べたようにTextBlockの

に示す単一のプロパティ用のテンプレート、ある説明のように。

  <MenuItem x:Name="RecentScripts" Header="Recent _Files" cal:Message.Attach="OpenRecentScript($orignalsourcecontext)"> 
       <MenuItem.Icon> 
        <Image Source="{StaticResource IconOpen}"/> 
       </MenuItem.Icon> 
       <MenuItem.ItemTemplate> 
        <DataTemplate> 
         <Label Content="{Binding Caption}"/> 
        </DataTemplate> 
       </MenuItem.ItemTemplate> 
      </MenuItem> 
関連する問題