【问题标题】:WPF, ListBox's ItemTemplate has CheckBox, but CheckBox does not seem to be the itemWPF,ListBox的ItemTemplate有CheckBox,但是CheckBox好像不是item
【发布时间】:2011-05-05 17:16:14
【问题描述】:

我只是想要以前在 Windows 窗体中使用的 CheckListBox。

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

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

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

我只想要 CheckedListBox 的行为...

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

【问题讨论】:

    标签: wpf listbox keyboard focus checkedlistbox


    【解决方案1】:

    这是因为您的 CheckBoxListBox 中。它被视为具有所有功能的列表项。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 2011-05-01
        相关资源
        最近更新 更多