listbox绑定ObservableCollection<string>,以checkbox的形式展示,当选中checkbox时如何将CheckBox的值传入后台,给出代码
时间: 2023-04-02 07:05:10 浏览: 189
您好,以下是将选中的 CheckBox 的值传入后台的代码示例:
XAML 代码:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" IsChecked="{Binding IsChecked}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
C# 代码:
public class ItemViewModel : INotifyPropertyChanged
{
private string _text;
private bool _isChecked;
public string Text
{
get { return _text; }
set
{
_text = value;
OnPropertyChanged(nameof(Text));
}
}
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
OnPropertyChanged(nameof(IsChecked));
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class ViewModel
{
public ObservableCollection<ItemViewModel> Items { get; set; }
public ViewModel()
{
Items = new ObservableCollection<ItemViewModel>
{
new ItemViewModel { Text = "Item 1" },
new ItemViewModel { Text = "Item 2" },
new ItemViewModel { Text = "Item 3" }
};
}
public void Save()
{
var selectedItems = Items.Where(x => x.IsChecked).Select(x => x.Text);
// 将选中的项传入后台进行处理
}
}
在 ViewModel 中,我们可以通过 Items 属性获取 ListBox 中的所有项,并通过 LINQ 查询选中的项。在 Save 方法中,我们可以将选中的项传入后台进行处理。
阅读全文