2014-11-03 6 views
1

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

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

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

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

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

ответ

1

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

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

+0

Для справки, подсказке там, если текст прокручивается за пределы экрана, где полоса прокрутки была бы очень некрасиво использовать – Earlz

+0

Ах, справедливо. Было бы замечательно, что «TextBlock» имел свойство только для чтения, указывающее, был ли обрезан текст дисплея, и в этом случае вы можете включить обрезку текста и условно включить подсказку для этих случаев. –

+0

умный читатель, +1 –

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> 
Смежные вопросы