一个非常简单的问题:
为什么我无法在WPF内容中看到_
(下划线)?
例如
的内容<Label Content="test_t" Name="label2" />
显示为"testt"
(下划线未显示)。
答案 0 :(得分:32)
标签支持助记符(即您可以使用 ctrl + (键)为它们提供焦点)。您可以使用下划线定义助记键。
http://www.charlespetzold.com/blog/2006/01/061004.html
如果要查看下划线,请用双下划线替换单个下划线。
答案 1 :(得分:8)
这是因为Label
支持根据其内容定义助记符,这是通过在助记符前加下划线来完成的(与使用&
的Windows窗体中发生的情况相同)。
如果要显示文字,请使用双下划线:
<Label Content="test__t" Name="label2" />
答案 2 :(得分:3)
我知道我迟到了,但我相信,如果你没有与TextBox相关联的Label,那么你应该使用TextBlock。
将控件更改为TextBlock可以解决此问题,因为只有Label具有助记符支持
答案 3 :(得分:1)
此样式解决了您的问题:
<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>
答案 4 :(得分:0)
我绑定到了一个我不想更改的数据源,所以我使用了一个自定义转换器来创建缺少的下划线:
[ValueConversion(typeof(string), typeof(string))]
public class ShowUnderscoreConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) =>
value is string text ? text.Replace("_", "__") : null;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) =>
value is string text ? text.Replace("__", "_") : null;
}