2011-02-25 107 views
15

在我的整个应用程序中,我有一些不显示的下划线(_)。下划线不显示在WPF中

这是由于访问者。但我怎么能禁用它?应用广泛?我没有他们的标签,文本框,...

谢谢

+0

[禁用WPF标签加速键(文本下划线缺失)]的可能重复](http://stackoverflow.com/questions/40733/disable-wpf-label-accelerator-key-text-underscore-is-missing) – Carl

回答

16

关闭全局凸显了所有的标签,你可以覆盖默认的模板标签,就像这样:

<Style x:Key="{x:Type Label}" 
     TargetType="{x:Type Label}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Label}"> 
       <Border Background="{TemplateBinding Background}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         Padding="{TemplateBinding Padding}" 
         SnapsToDevicePixels="true"> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
             VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
             RecognizesAccessKey="False" 
             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsEnabled" 
          Value="false"> 
         <Setter Property="Foreground" 
           Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" /> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

它不同于在此行的默认模板: RecognizesAccessKey="False"

将此样式应用于您的应用程序的全局资源(App.xaml),并且您的标签将不再识别下划线。

+0

嗨!感谢您的答复!我今天会尝试,但似乎是我需要的。绑定默认值是强制性的吗? – J4N

+0

@ J4N - 你不需要绑定任何东西。只需将此样式放入全局资源(在App.xaml中),它就会自动应用于应用程序中的所有标签(除非在标签上明确指定了其他样式)。 –

+0

对不起,我正在谈论这些事情: 填充=“{TemplateBinding填充}” 他们是强制性的吗?因为如果我必须为所有应该显示内容的组件做这件事,我想减少它的代码量 – J4N

3

您是否尝试过增加一倍的下划线?

+0

为什么发生双下划线显示不是单一的? – Ahmad

+1

@Ahmad,因为下划线表示下一个字母是访问键(与Alt一起使用;例如文本“_Ahmad”允许通过Alt + A访问它,如下划线所示)。所以两个下划线是转义序列。 – SlapY

9

使用两个下划线:

name = "__something"; 
+0

我不能使用这个,这些值来自数据库,我无法承担我在每个领域做到这一点。而且我的大部分领域都直接限制在我的物品的价值上。 – J4N

+3

使用值转换器将下划线替换为双下划线。简单。 – Aliostad

6

一个简单的解决方案是不使用<标签>。 <TextBox>不会混乱下划线。

+6

或TextBlock如果你不想处理可编辑的东西。绑定到“文本”而不​​是“内容”。 –