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     2
3     4

Однако при использовании Out-Gridview подчеркивания автоматически удаляются?

Подчеркивание удалено

Кто-нибудь знает, как этого избежать?

1 ответ

Решение

Похоже, это связано с тем, что в WPF первое подчеркивание в тексте ставит префикс ускоряющего символа для элемента управления.

Смотрите этот блог для деталей:

WPF использует символ подчеркивания вместо символа амперсанда (как в WinForms) для префикса клавиши доступа (или ускорителя или мнемоники) в тексте его элементов, таких как Label и Button.

Вы можете избежать подчеркивания, используя два подчеркивания.

Таким образом, этот код будет отображаться Ok в gridview, но не в Format-Table выход

$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

Обратите внимание, что экранирование необходимо только для первого подчеркивания в строке, а не для остальных.

Я думаю, что это может быть расценено как ошибка (так как это фактически не добавляет никаких горячих клавиш), но я не мог найти никаких отчетов на http://connect.microsoft.com/

Другие вопросы по тегам