Powershell Out Gridview删除下划线

Powershell Out Gridview删除下划线,powershell,out-gridview,Powershell,Out Gridview,考虑以下代码: $a = @() $b = "" |select ho_ho,ha_ha $b.ho_ho = "1" $b.ha_ha = "2" $a+=$b $b = "" |select ho_ho,ha_ha $b.ho_ho = "3" $b.ha_ha = "4" $a+=$b $a | Format-Table -AutoSize $a | Out-GridView 使用Format Table,列标题上的下划线将保留 ho_ho ha_ha ----- ----- 1

考虑以下代码:

$a = @()

$b = "" |select ho_ho,ha_ha
$b.ho_ho = "1"
$b.ha_ha = "2"
$a+=$b

$b = "" |select ho_ho,ha_ha
$b.ho_ho = "3"
$b.ha_ha = "4"
$a+=$b

$a | Format-Table -AutoSize
$a | Out-GridView
使用Format Table,列标题上的下划线将保留

ho_ho ha_ha
----- -----
1     2
3     4
但是,当使用Out Gridview时,下划线会自动删除吗


有人知道如何避免这种情况吗?

这似乎与WPF中的一个事实有关,即文本中的第一个下划线作为控件的加速器字符的前缀

有关详细信息,请参见:

WPF使用下划线字符而不是符号和字符 (与WinForms类似)为访问添加前缀(又称加速器或 助记符)输入标签和按钮等元素的文本

可以使用两个下划线来转义下划线

因此,该代码将在gridview中显示Ok,但不会在
格式表中显示

$a = @()

$b = "" |select ho__ho,ha__ha
$b.ho__ho = "1"
$b.ha__ha = "2"
$a+=$b

$b = "" |select ho__ho,ha__ha
$b.ho__ho = "3"
$b.ha__ha = "4"
$a+=$b

$a | Format-Table -AutoSize
$a | Out-GridView
请注意,转义仅在字符串中的第一个下划线上才有必要,其他下划线则不必转义

我认为这可能被视为一个bug(因为它实际上也没有添加任何快捷键),但我找不到任何关于

Excellent find(尼斯功能bug:)的报告。实际上,如果在第一个“\u1”之后使用不同的字母,它会添加快捷键。例如:
(1,'c'),(2,'b'),(3,'a')|选择对象-属性{Name='ab'u cd';表达式={$\[0]},@{Name='ef'ugh'ij';表达式={$\[1]}}Out-GridView
。按Alt键时,“c”和“g”将突出显示。按Alt+C或Alt+G将按该列排序(升序和降序交替)。