zoukankan      html  css  js  c++  java
  • 【WPF】在MenuItem中下划线“_”显示不正常

    MenuItem的Header显示文字时发现一个问题,字符串中的第一个下划线“_”不能显示。如果该下划线前面是一个英文字母,则下划线会跑到该字母下方。(是中文汉字则不会)

    查到原因是第一个下划线“_”被转义为了MenuItem的快捷键。。。

    因为Header的值是绑定到列表中元素的某个属性的值的,在该属性值前面加@也没法阻止转义,最后想到的办法是把MenuItem的内部显示换成TextBlock控件。

    下面是用MenuItem做查看“最近打开”的文件的例子。RecentFilesList列表是数据源。根据业务需要填充该列表即可。

    <MenuItem Header="最近打开" ItemsSource="{Binding Path=RecentFilesList}">
        <MenuItem.ItemContainerStyle>
            <Style>
                <Setter Property="MenuItem.Header" Value="{Binding Path=SpacePlanName}" />
                <!--<Setter Property="MenuItem.ItemsSource" Value="{Binding Path=Items}" />-->
                <!--<Setter Property="MenuItem.Icon" Value="{Binding Path=Icon}" />-->
                <!--<Setter Property="MenuItem.IsCheckable" Value="{Binding Path=IsCheckable}" />-->
                <!--<Setter Property="MenuItem.IsChecked" Value="{Binding Path=IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />-->
                <Setter Property="MenuItem.Command" Value="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.OpenRecentFilesCommand}" />
                <Setter Property="MenuItem.CommandParameter" Value="{Binding Path=SpacePlanId}"/>
                <!--<Setter Property="MenuItem.InputGestureText" Value="{Binding Path=InputGestureText}"/>-->
                <!--<Setter Property="MenuItem.ToolTip" Value="{Binding Path=ToolTip}" />-->
                <Setter Property="MenuItem.HeaderTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Text="{Binding Header,RelativeSource={RelativeSource AncestorType={x:Type MenuItem},Mode=FindAncestor}}"/>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=IsSeparator}" Value="true">
                        <Setter Property="MenuItem.Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type MenuItem}">
                                    <Separator Style="{DynamicResource {x:Static MenuItem.SeparatorStyleKey}}" />
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem>
  • 相关阅读:
    Java中会存在内存泄漏吗,请简单描述。
    什么是类加载器
    通俗易懂 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系
    Redis真的那么好用吗
    java中public,private,protected和default的区别
    聚集和非聚集索引
    我以为我对Mysql索引很了解,直到我遇到了阿里的面试官(转)
    Java中存储金额用什么数据类型
    InnoDB在MySQL默认隔离级别下解决幻读
    android应用程序第一次启动时显示引导界面
  • 原文地址:https://www.cnblogs.com/guxin/p/wpf-menuitem-header-cannot-display-underline.html
Copyright © 2011-2022 走看看