Во-первых, вы можете проверить Предварительный просмотр ленты в WPF Toolkit от Microsoft.
Или один общий подход будет выглядеть так:
Сделайте DependencyProperty
в вашем элементе управления Window / top-level, с которого вы можете сработать, например IsShowingKeyTips
. Поймайте ввод с клавиатуры, чтобы перевернуть это, как считаете нужным.
Создайте ContentControl
, который имеет два свойства зависимости, такие как 1) IsShowingKeyTip
и 2) KeyTipText
. Давайте назовем это KeyTipContentControl
.
Отредактируйте ContentControl
ControlTemplate
, чтобы посмотреть, как вы хотите. Сделайте его Canvas
или вашим любимым контейнером макета, используйте некоторые привязки для правильного определения размера, возможно, добавьте отрицательные значения Margin
.
Если вы хотите проявить фантазию, наберите AttachedProperties
, как KeyTip.Text
, чтобы вывести их из простого элемента управления в KeyTipContentControl
.
В вашем XAML поместите ContentControls
вокруг Controls
, для которого вы хотите использовать подсказки клавиш. Установите соответствующие привязки.
На верхнем уровне вы получите нечто подобное:
<Window ... >
<code:KeyTipContentControl
KeyTipText="A"
IsShowingKeyTip="{Binding IsShowingKeyTips}">
<Button x:Name="MyButtonWithKeyTip" ... />
</code:KeyTipContentControl>
</Window>
Чтобы элегантно справиться с нажатием клавиши, я сейчас не за что. : -)