wpf中我把listbox的items改成了CheckBox的形式,如何通过多选CheckBox来获取item的值?请给出示例
时间: 2023-04-04 14:01:14 浏览: 111
您好,可以通过以下代码实现:
XAML:
<ListBox x:Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" IsChecked="{Binding IsSelected, Mode=TwoWay}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C#:
var selectedItems = listBox.Items.Cast<CheckBox>().Where(cb => cb.IsChecked == true).Select(cb => cb.Content.ToString()).ToList();
这样就可以通过多选 CheckBox 来获取 ListBox 中选中的项的值了。
相关问题
wpf中我把listbox的items改成了CheckBox的形式,如何通过多选CheckBox来获取item的值?
您可以使用以下代码来获取选中的 CheckBox 的值:
foreach (CheckBox item in listBox1.Items)
{
if (item.IsChecked == true)
{
string value = item.Content.ToString();
// 处理选中的值
}
}
其中,listBox1 是您的 ListBox 控件的名称。
在wpf中使用mvvm模式,将一个listbox绑定了后台数据,将listbox的items以CheckBox的形式展示,如何通过多选checkbox来获取选中的items?请给出代码
您好,可以使用以下代码来实现:
在 XAML 中:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsSelected}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在 ViewModel 中:
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get { return _items; }
set
{
_items = value;
OnPropertyChanged("Items");
}
}
public ViewModel()
{
// 初始化数据
Items = new ObservableCollection<Item>()
{
new Item() { Name = "Item 1" },
new Item() { Name = "Item 2" },
new Item() { Name = "Item 3" },
new Item() { Name = "Item 4" },
new Item() { Name = "Item 5" },
};
}
public List<Item> GetSelectedItems()
{
return Items.Where(x => x.IsSelected).ToList();
}
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class Item : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
OnPropertyChanged("IsSelected");
}
}
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
在代码中,我们将 ListBox 的 ItemTemplate 设置为一个 CheckBox,同时将 CheckBox 的 IsChecked 属性绑定到 Item 的 IsSelected 属性上。在 ViewModel 中,我们可以通过 GetSelectedItems 方法来获取选中的 Item。
阅读全文