我是WPF的新手并试图动态地向ListBox添加一些复选框项目,然后点击按钮我试图从列表框中获取选中的项目。但问题是没有检查项目被提取。以下是列表框的代码
<ListBox HorizontalAlignment="Left" Margin="39.714,179,0,364.318" Name="ListBox1" Width="234" FontSize="16" SelectionMode="Multiple">
<ListBox.BitmapEffect>
<DropShadowBitmapEffect />
</ListBox.BitmapEffect>
<ListBoxItem>
<CheckBox Content="Bleeding" Name="CheckBox1"></CheckBox>
</ListBoxItem>
<ListBoxItem>
<CheckBox Content="Bruising or Discoloration" Name="CheckBox2"></CheckBox>
</ListBoxItem>
<DataTemplate>
<CheckBox Content="{Binding .}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" />
</DataTemplate>
</ListBox>
以及如何获取这些已检查项目的代码:
Dim l As New List(Of String)
For Each l1 As ListBoxItem In ListBox1.SelectedItems
l.Add(l1.Content)
Next
我也提到了这些问题:How to get selected items from listbox has checkboxes in WPF? 和 How to remove checked items from a listbox in WPF?
但没有找到任何解决方案。请告诉我如何实现这一目标。
答案 0 :(得分:1)
选中该复选框并未选择该项目,这就是您无法获得预期行为的原因。
您可以将复选框的IsChecked
属性绑定到列表框项的IsSelected
属性。为此,每个复选框上的绑定应为:
IsChecked="{Binging IsSelected,
RelativeSource={RelativeSouce FindAncestor,
AncestorType={x:Type ListBoxItem}},
Mode="TwoWay"}"