2011-05-05 80 views
7

我只想要我用於Windows Forms的CheckListBox。WPF,ListBox的ItemTemplate具有CheckBox,但CheckBox似乎不是該項目

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

起初,這似乎工作,但有許多問題。簡而言之,它只是像CheckBox一樣浮在真實物品上,而不是CheckBox是物品。

我的意思是,(1)單擊複選框的文本將不會選擇列表框項目,(2)上下按鍵不會選中該複選框。我必須點擊複選框才能關注它。我已經搜索了Google的解決方案,但沒有清晰的解決方案。我想要太多嗎?

我只想CheckedListBox的水煤漿...

I(1)通過處理複選框的PreviewMouseDown事件並手動選擇項目合作周圍。它似乎並不乾淨。

回答

9

這是因爲你的CheckBox是在ListBox。它被作爲列表中的一個項目處理,並具有它的所有功能。

如果您只想構建複選框列表並且不需要列表的選擇邏輯,請使用ItemsControl而不是ListBox。用法相同。如果你想讓你的CheckboxList可滾動,使用ScrollViewer來包裝ItemsControl。

<ScrollViewer> 
    <ItemsControl ItemsSource="{Binding YourItemsCollection">  
     <DataTemplate>     
      <CheckBox Content="{Binding Name}"/> 
     </DataTemplate> 
    </ItemsControls> 
</ScrollViewer> 
相關問題