2014-11-13 2 views
0

У меня есть списокВ WPF Как настроить фокус на кнопку в списке кнопок без нажатия на эту кнопку?

<ListBox Name="PageNumberListItemsControl" VirtualizingPanel.IsVirtualizing="True" 
     ItemsPanel="{StaticResource MyPanel}" 
     ItemTemplate="{StaticResource CountTemplate}" Grid.Column="1"> 
</ListBox> 

Шаблон, чтобы сделать список кнопок

<DataTemplate x:Key="CountTemplate"> 
    <Button Content="{Binding}" Click="Button_Click"> 
     <Button.Style> 
      <Style> 
       <Setter Property="FocusManager.FocusedElement" 
         Value="{Binding RelativeSource={RelativeSource Self}}"> 
       </Setter> 
      </Style> 
     </Button.Style> 
    </Button> 
</DataTemplate> 

код для обновления позиции в списке

PageNumberListItemsControl.SelectedIndex = CurrentPageNumber - 1; 

Я хочу кнопку кода выбранного для быть выделены. Как я могу это исправить?

ответ

2

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

<DataTemplate x:Key="CountTemplate"> 
    <Button Content="{Binding}" Click="Button_Click" Name="bt"> 
    </Button> 
    <DataTemplate.Triggers> 
    <DataTrigger Binding="{Binding IsSelected, 
     RelativeSource={RelativeSource AncestorType=ListBoxItem}}" Value="true"> 
     <Setter TargetName="bt" Property="FocusManager.FocusedElement" 
           Value="{Binding ElementName=bt}"/> 
    </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

Затем при нажатии какой-то элемент, чтобы выбрать его или использовать код, кнопка внутри будет автоматически сфокусируется. Однако, когда вы используете клавиши со стрелками (вверх и вниз) для перемещения по элементам listbox, выбранный элемент все еще имеет фокус. Это поведение на самом деле то, что мы должны сохранить, потому что только когда выделенный элемент все еще имеет фокус, мы все равно можем использовать клавишу со стрелкой вверх/вниз до продолжить навигацию. В противном случае, если внутри кнопки находится фокус, мы не можем продолжать навигацию с помощью клавиш со стрелками вверх/вниз (если вы не используете какой-либо код для обработки какого-либо ключевого события).

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