将焦点设置在WPF复选框列表中

时间:2012-10-16 07:38:47

标签: c# wpf xaml mvvm

我有一个包含汽车模型的WPF复选框列表。当我进入列表时,会发生以下情况:

1)在第一个标签键上按下,选择列表项

2)按第二个标签键,选中实际复选框,允许我使用空格键键设置IsChecked状态。

当选择列表项时,是否可以自动将光标移动到复选框? (试图避免两次击中标签)

XAML:

<ListBox ItemsSource="{Binding Cars}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox Content="{Binding Make}" IsChecked="{Binding IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

2 个答案:

答案 0 :(得分:1)

尝试将此添加到您的ListBox

        <ListBox.ItemContainerStyle>
          <Style TargetType="Control">
            <Setter Property="Focusable" Value="False" />
          </Style>
        </ListBox.ItemContainerStyle>

答案 1 :(得分:1)

尝试了丹的解决方案,它可以工作但是在选择第一个复选框后它将焦点移出ListBox控件,我正在寻找阻止焦点设置到所选列表框项目的东西,同时仍然允许选项卡通过所有列表中的复选框。

以下链接帮助了我 - Keyboard focus to list box items in WPF

我做了一些更改以创建边框和verticall滚动条,完成下面的XAML:

<Border BorderThickness="0.8" BorderBrush="Gray">
        <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="1">
            <ItemsControl ItemsSource="{Binding Cars}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding Make}" IsChecked="{Binding IsChecked,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </Border>