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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM