与DisplayMemberPath的数据绑定在menuitem中转义下划线

时间:2017-11-03 09:34:04

标签: c# wpf mvvm data-binding caliburn.micro

好的,我们有一个最近的文件菜单选项。我们使用MVVM对MenuItem条目进行数据绑定,并提供DisplayMemberPath。但是WPF会转义字符串,因此下划线显示为下划线而不是accesskey

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

1 个答案:

答案 0 :(得分:2)

用ItemTemplate替换DisplayMemberPath。与解释here DisplayMemeberPath

一样
  

单个属性的模板,显示在TextBlock

正如@XAMlMAX所说,TextBlock不支持AccessText,而Label则支持AccessText。

            <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>