WPF、列表框和x27;s ItemTemplate具有复选框,但复选框似乎不是该项

WPF、列表框和x27;s ItemTemplate具有复选框,但复选框似乎不是该项,wpf,listbox,keyboard,focus,checkedlistbox,Wpf,Listbox,Keyboard,Focus,Checkedlistbox,我只是想要一个用于Windows窗体的复选框 <ListBox> <ListBox.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding Name}"/> </DataTemplate> </ListBox.ItemTemplate> 起初

我只是想要一个用于Windows窗体的复选框

    <ListBox>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox  Content="{Binding Name}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>

起初,这似乎可行,但存在许多问题。简而言之,它的工作原理就像一个复选框浮动在真实的项目上,而不是复选框就是项目

我的意思是,(1)单击复选框的文本不会选择列表框项目,(2)按向上和向下键不会聚焦复选框。我必须单击复选框才能将其聚焦。我在谷歌上搜索过解决方案,但没有干净的解决方案。我想要的太多了吗

我只想要CheckedListBox的行为


我通过处理复选框的PreviewMouseDown事件并手动选择项目来解决(1)。它似乎不干净。

这是因为您的
复选框位于
列表框中。它作为列表中的一项处理,并具有其所有功能

如果您只想构建复选框列表,而不需要列表的选择逻辑,请使用,而不是
列表框
。用法相同。如果要使复选框列表可滚动,请使用ScrollViewer包装ItemsControl

<ScrollViewer>
   <ItemsControl ItemsSource="{Binding YourItemsCollection">
      <ItemsControl.ItemTemplate>    
          <DataTemplate>                
             <CheckBox  Content="{Binding Name}"/>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
   </ItemsControls>
</ScrollViewer>

链接问题()的选定答案提供了一个干净的解决方案!被困在同一个场景->找到你的问题->找到另一个有补救措施的。嗯