0

我是 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? 以及 如何从 WPF 的列表框中删除选中的项目?

但没有找到任何解决方案。请告诉我如何实现这一目标。

4

1 回答 1

1

选中复选框不会选择项目,这就是您没有得到预期行为的原因。

您可以将IsChecked复选框的IsSelected属性绑定到列表框项的属性。为此,每个复选框上的绑定应该是:

IsChecked="{Binging IsSelected, 
                    RelativeSource={RelativeSouce FindAncestor,
                                                  AncestorType={x:Type ListBoxItem}},
                    Mode="TwoWay"}"
于 2013-05-05T08:47:15.843 回答