AccessKey / Горячая клавиша в пользовательском текстовом MenuItem.Header возможно? - PullRequest
2 голосов
/ 26 ноября 2008

Можно ли получить доступ к следующему отформатированному пункту меню, как к любому другому стандартному пункту меню (используя метод подчеркивания, например, «_File» будет доступен при нажатии «f»)? Я хотел бы использовать «O» в качестве «ключа доступа» здесь.

К сожалению, <AccessText> не может использоваться напрямую (я представлял что-то вроде

<AccessText Visibility="Collapsed">_O2-Genion</AccessText>

в <StackPanel>, но, увы, это не сработало.)

<MenuItem>
  <MenuItem.Header>
    <TextBlock>
      O
      <Span BaselineAlignment="Subscript">
        <TextBlock Margin="-3,0,0,0" FontSize="8">
        2
        </TextBlock>
      </Span>
      -Genion
    </TextBlock>
  </MenuItem.Header>
</MenuItem>

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 26 ноября 2008

Поскольку мне нужен индекс, я не могу избежать пользовательского форматирования. То, что я нашел уродливым, но, очевидно, возможным решением, заключается в следующем:

<MenuItem>
  <MenuItem.Header>
    <StackPanel Orientation="Horizontal">
      <AccessText>_O</AccessText>
      <TextBlock>
        <Span BaselineAlignment="Subscript" FontSize="8">2</Span>-Genion
      </TextBlock>
    </StackPanel>
  </MenuItem.Header>
</MenuItem>
0 голосов
/ 26 ноября 2008

Вам вообще нужно использовать AccessKey? Предполагая, что вам не нужно / не нужно настраивать пользовательский стиль текста заголовка MenuItem, вы можете получить тот же эффект, выполнив следующие действия:

<MenuItem HeaderText="_02" />

Будет ли просто поставить подчеркивание перед 0 работой? Хотя, похоже, я помню, что одно отличие между TextBlock и Label состоит в том, что TextBlock не поддерживает ключи доступа, но Label поддерживает. Если это так, может быть, использовать Label вместо TextBlock в вашем пункте меню?

...