7

我只想要我曾经与 Windows 窗体一起使用的 CheckListBox。

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

起初这似乎可行,但存在许多问题。简而言之,它就像 CheckBox 浮动在真实项目上一样,而不是 CheckBox 是项目。

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

我只想要CheckedListBox的行为......

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

4

2 回答 2

9

这是因为你CheckBox在一个ListBox. 它被视为具有所有功能的列表中的一项。

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

<ScrollViewer>
   <ItemsControl ItemsSource="{Binding YourItemsCollection">
      <ItemsControl.ItemTemplate>    
          <DataTemplate>                
             <CheckBox  Content="{Binding Name}"/>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
   </ItemsControls>
</ScrollViewer>
于 2011-05-05T17:18:26.763 回答
0

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

于 2012-12-12T16:01:46.723 回答