2010-07-01 47 views
2

我有一個列表框,其項目模板有一個複選框。 現在,當我單擊列表框中的複選框時,它將設置複選框的選中狀態。如果我使用鍵盤「空格」鍵,我無法更改複選框狀態。鍵盤焦點列出WPF中的框項目

注意:通過單擊將焦點設置到複選框,鍵盤快捷鍵正在工作。

回答

2

如果你不想列表框,提供選擇的一切,你可以使用一個普通的ItemsControl,而不是一個列表框:

<ItemsControl ItemsSource="{Binding}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <CheckBox Content="{Binding}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

然後,你將只是一個複選框序列不與ListBoxItem的包裹他們控件將採取鍵盤焦點。另一方面,如果你想要ListBox顯示選擇,那麼你可能想要一個多選列表框,其中CheckBox的狀態被綁定到ListBoxItem的選定狀態。由於單擊ListBoxItem將檢查CheckBox,因此可以防止CheckBox被完全集中:

<ListBox ItemsSource="{Binding}" SelectionMode="Multiple"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <CheckBox 
       Content="{Binding}" 
       Focusable="False" 
       IsChecked="{Binding IsSelected, RelativeSource= 
        {RelativeSource AncestorType={x:Type ListBoxItem}}}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
相關問題