我有一个列表框,其中的项包含checkBoxes:我想为用户选择的每个CheckBox获取字符串Content
<ListBox Name="SendCodecsNamelistBox"
Height="52"
Margin="150,128,31,65"
ItemsSource="{Binding .}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=.}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
发布于 2012-08-08 03:36:44
您可以像这样定义一个模型
public class Model
{
public string Content { get; set; }
public bool IsSelected { get; set; }
}
并将其绑定到复选框
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=Content}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
</DataTemplate>
</ListBox.ItemTemplate>
var data = new List<Model>()
{
new Model{ Content = "item1", IsSelected = false},
new Model{ Content = "item2", IsSelected = false},
new Model{ Content = "item1", IsSelected = false},
new Model{ Content = "item3", IsSelected = false}
};
SendCodecsNamelistBox.ItemsSource = data;
然后你就可以像这样得到你想要的
var selectedContents = data.Where(i => i.IsSelected)
.Select(i => i.Content)
.ToList();
发布于 2012-08-08 03:35:09
这就是WPF和MVVM结合在一起的原因。因为您可以在ItemsTemplate
中放置任何内容,所以直接从图形用户界面获取有关选中项的信息是一件很痛苦的事情。
将您的ListBox
绑定到具有IsChecked
属性的视图模型集合,然后将该属性绑定到CheckBox.IsChecked
,您将从集合中获得选中项。
https://stackoverflow.com/questions/11857245
复制