2017-11-03 25 views
0

최근 파일 메뉴 옵션이 있습니다. MVVM을 사용하여 MenuItem 항목을 데이터 바인딩하고 DisplayMemberPath를 제공합니다. 그러나 WPF는 이렇게 밑줄 대신으로입니다 accesskey로 표시됩니다 밑줄 문자열DisplayMemberPath를 사용한 데이터 바인딩은 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

우리는 또한 사용자 정의 테마,하지만 MennuItem에 대한 스타일을 사용하지 않도록 설정하는 https://github.com/AndersMalmgren/FreePIE/blob/recet_files_shortcut/FreePIE.GUI/Themes/ExpressionDark.xaml#L1921

도움이되지 않는 한 탈출
+0

당신은 [액세스 텍스트]를 결합 할 수있다 (https://msdn.microsoft.com/en-us/library/system.windows.controls.accesstext (V = vs.110)에서 .aspx) 직접? ' <이미지 출처 = "{정적 리소스 IconOpen}"/> _0 당신은 헤더 템플릿을 지정해야합니다 ' – 3615

+1

및 문제를 해결해야하는'Label'을 사용하십시오. 이유는 기본 템플릿이'TextBlock'을 사용하고 TextBlock이 밑줄을 사용하지 않기 때문입니다. – XAMlMAX

+0

그러나 동일한 템플릿이 데이터 바인딩되지 않은 메뉴 항목에 대해 작동합니다. 스크린 샷을 확인하십시오. 최근 파일의 액세스 형식은 – 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>