2012-04-12 4 views
0

У меня есть InputBinding с намерением, что F6 работает как ярлык для активации режима редактирования, как это:Как обрабатывать команды InputBinding и ToggleButtons?

<Window.InputBindings> 
    <KeyBinding Gesture="F6" Command="{Binding Path=ActivateEdit}"/> 
</Window.InputBindings> 

Кнопка сама выглядит следующим образом:

<ToggleButton Height="26" Width="26" Margin="0,0,1,1" Padding="1" 
          ToolTip ="Bearbeiten (F6)" 
          Command="{Binding ActivateEdit}"    
          IsChecked="{Binding IsEditPressed, Converter={StaticResource boolToNullableBoolConverter}}" 
          IsTabStop="False" BorderThickness="0" BorderBrush="{x:Null}" Focusable="False"> 
    <Image Source="/Images/Edit.ico" Stretch="Fill" Height="16" Width="16"/> 
</ToggleButton> 

Если кнопка нажата вручную запускается команда. Также, если пользователь нажимает F6. Но в этом случае кнопка не получает состояние IsChecked. Как я могу выполнить это без кодирования другой команды для KeyBinding?

+0

Вам действительно нужен этот конвертер для 'IsChecked'? –

+0

Угадайте, что в этом случае это не обязательно, да. Вероятно, я жертва страха перед синдромом NULL. – Artimidor

ответ

1

Сделайте команду «переключить» свойство IsEditPressed, в идеале это будет единственное, что нужно сделать, что упростит синхронизацию. Тогда вам даже не понадобилась бы команда на самом ToggleButton, так как достаточно привязки IsChecked.

+0

Неужели вам все равно понадобится привязка команды к ToggleButton для вызова команды при нажатии кнопки? – roomaroo

+0

Действительно ... Должна быть команда на ToggleButton, верно? В противном случае: как нажимать кнопку выполнить эту команду? – Artimidor

+0

А, я вижу сейчас, Х.Б.! Я могу поместить код для выполнения команды в части Set IsEditPressed, и в самой команде просто переключите IsEditPressed на true или false. - Прекрасно работает! Спасибо за совет! – Artimidor

 Смежные вопросы

  • Нет связанных вопросов^_^