[英]Get all selected items from a ListBox
如何从带有复选框的列表框中获取选定的项目?
<ListBox Margin="15" Name="MyListBox"
VerticalAlignment="Stretch"
ItemsSource="{Binding Items}"
SelectionMode="Multiple" IsSynchronizedWithCurrentItem="True">
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<CheckBox Margin="5,2"
IsChecked="{TemplateBinding IsSelected}">
<ContentPresenter />
</CheckBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
</ListBox>
My ItemsSource是一个可观察到的集合,其中添加了一些项目。
public ObservableCollection<string> Items = new ObservableCollection<string>()
{"AAAAA", "BBBBB", "CCCCC", "DDDDD"};
DataContext = DataContext;
MyListBox.ItemsSource = Items;
这样可以很好地显示项目,但是如果我在界面中尝试选择几个项目并获得所选项目,那么我只会获得第一个项目。 为什么?
MyListBox.SelectedItems == "AAAA";
CheckBox.IsChecked
绑定需要为TwoWay
,TemplateBinding不支持。 请改用常规Binding
(默认情况下为TwoWay):
<CheckBox IsChecked="{Binding IsSelected,
RelativeSource={RelativeSource TemplatedParent}}" ...>
<ContentPresenter />
</CheckBox>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.