Лучший способ привязать текст всплывающей подсказки к содержимому элемента управления?

1

Итак, я добавляю всплывающие подсказки в форму WPF, и в основном подсказки должны соответствовать содержимому. Однако у меня есть _ в некоторых элементах управления, чтобы их можно было выбрать с помощью ALT+ <key>. Я, конечно, не хочу, чтобы _ был включен в текст всплывающей подсказки.

Кроме того, я бы предпочел не писать имя элемента управления в третий раз для ElementName=. Это то, что я сейчас имею:

<CheckBox x:Uid="chkProcess" Name="chkProcess" ToolTip="{Binding ElementName=chkProcess, Path=Content}">_Process widgets</CheckBox>

У меня также есть второй метод, который работает, но не так хорош. Он в основном присоединяется к событию TollTipOpening и динамически изменяет значение всплывающей подсказки для соответствия содержимому с правильной дескрипцией _ символов.

Есть ли чистый способ избавиться от _ с привязкой данных или к лучшему способу сделать это в целом?

Теги:
xaml
wpf

2 ответа

2

Вы можете попробовать: Используйте ярлык в подсказке, которая не будет показывать "_",

<CheckBox x:Uid="chkProcess" Name="chkProcess">_Process widgets
    <CheckBox.ToolTip>
        <ToolTip DataContext="{Binding Path=PlacementTarget, RelativeSource={x:Static RelativeSource.Self}}">
            <Label Content="{Binding Content}"/>
        </ToolTip>
    </CheckBox.ToolTip>
</CheckBox>
1

Вы можете заменить ElementName=chkProcess на RelativeSource={RelativeSource Self}. Хотя он более подробный, он может также позволить вам удалить атрибут Name.

Если вы хотите, чтобы вычистить _ символов, вы можете создать простой IValueConverter для выполнения этой задачи, а также указать Converter на ваш кончик инструмента Binding. Однако, имея подсказку, которая просто срывает ярлык, который уже отображается, в лучшем случае кажется бессмысленным и в худшем случае раздражает.

  • 0
    Для справки есть всплывающая подсказка, если текст прокручивается за пределами экрана, где полоса прокрутки будет очень уродливой
  • 0
    Ах, достаточно справедливо. Было бы неплохо, чтобы TextBlock имел свойство только для чтения, указывающее, был ли обрезан текст на дисплее, и в этом случае вы можете включить обрезку текста и условно включить всплывающую подсказку только для этих случаев.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню