我有一個列表框,其中項目包含複選框:WPF ListBoxItem的選擇問題
<ListBox Style="{StaticResource CheckBoxListStyle}" Name="EditListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Click="Checkbox_Click" IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" Content="{Binding Path=DisplayText}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我遇到的問題是,當我點擊複選框或其內容,父ListBoxItem中沒有得到選擇。如果點擊複選框旁邊的空格,ListBoxItem會被選中。
我試圖得到的行爲是能夠選擇列表中的一個或多個項目,並使用空格鍵打開和關閉複選框。
一些更多的信息:
private void Checkbox_Click(object sender, RoutedEventArgs e)
{
CheckBox chkBox = e.OriginalSource as CheckBox;
}
在上面,當我點擊複選框的代碼,e.Handled是虛假和chkBox.Parent爲空。
肯特的回答把我放下了正確的道路,這是我結束了:
<ListBox Style="{StaticResource CheckBoxListStyle}" Name="EditListBox" PreviewKeyDown="ListBox_PreviewKeyDown">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" />
<TextBlock Text="{Binding DisplayText}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我有,當你點擊空格鍵在列表框中使用PreviewKeyDown,因爲默認情況下,它會取消一切除了最近選擇的項目。
這就是我一開始的方式。缺點是複選框狀態被綁定到列表控件選擇狀態,這對於包含複選框的列表控件來說不是正常行爲。 – 2008-09-25 17:26:17