C# WPF获取复选框内容

C# WPF获取复选框内容,c#,wpf,checkbox,C#,Wpf,Checkbox,我正在使用数据模板设置组合框中复选框的值,如下所示: <ComboBox Margin="118,117,163,164" ItemsSource="{Binding collection}"> <ComboBox.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding Name}"/> <

我正在使用数据模板设置组合框中复选框的值,如下所示:

<ComboBox Margin="118,117,163,164" ItemsSource="{Binding collection}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Content="{Binding Name}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

这是应该的。我的问题是,当用户选中复选框时,我需要能够获取存储在复选框中的内容值。这可能吗


谢谢。

您需要将复选框的IsChecked属性绑定到每个项目的支持对象上的另一个属性。i、 e.具有名称的类型应公开一个布尔属性IsSelected

数据绑定将适当地更新IsSelected属性,这将便于您在代码中访问。e、 g.您可以在列表上循环并过滤所有ISSELECT=false的项目

代码示例

XAML


显示选定的
选定项目
代码隐藏

public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;

    Items = new List<ItemVM>
                {
                    new ItemVM {IsSelected = false, Name = "Firefox"},
                    new ItemVM {IsSelected = false, Name = "Chrome"},
                    new ItemVM {IsSelected = false, Name = "IE"}
                };
}

public IEnumerable<ItemVM> Items { get; set; }
private IEnumerable<ItemVM> _selectedItems;
public IEnumerable<ItemVM> SelectedItems
{
    get { return _selectedItems; }
    set
    {
        _selectedItems = value;
        if (PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedItems"));
    }
}

private void EvaluateSelectedItems(object sender, RoutedEventArgs e)
{
    SelectedItems = Items.Where(item => item.IsSelected);
}
public主窗口()
{
初始化组件();
this.DataContext=this;
项目=新列表
{
new ItemVM{IsSelected=false,Name=“Firefox”},
新项目vm{IsSelected=false,Name=“Chrome”},
新项目vm{IsSelected=false,Name=“IE”}
};
}
公共IEnumerable项{get;set;}
私有IEnumerable _selectedItems;
公共IEnumerable SelectedItems
{
获取{return\u selectedItems;}
设置
{
_selectedItems=值;
if(PropertyChanged!=null)
this.PropertyChanged(这是新的PropertyChangedEventArgs(“SelectedItems”);
}
}
private void EvaluateSelectedItems(对象发送方,RoutedEventTargets e)
{
SelectedItems=Items.Where(item=>item.IsSelected);
}

get the content value storage in the checkbox是什么意思?我假设您需要用户选中/选择的所有名称。复选框的文本值存储为内容。@Gishu,是的,这是正确的。谢谢。不允许我在Checked属性上使用绑定,因为它说它需要一个事件。属性名称已被选中,选中时的事件已被选中。@Darren-是的,只是掩盖了这一点。。要绑定的属性已选中复选框上的布尔属性。更新..然后如何使用此选项从复选框中获取内容文本?再次感谢。@Gishu,非常感谢。这很有效。是否有一种不必使用按钮即可计算选定对象的方法?ObservableCollection暴露的唯一事件不适合它。再次感谢。
public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;

    Items = new List<ItemVM>
                {
                    new ItemVM {IsSelected = false, Name = "Firefox"},
                    new ItemVM {IsSelected = false, Name = "Chrome"},
                    new ItemVM {IsSelected = false, Name = "IE"}
                };
}

public IEnumerable<ItemVM> Items { get; set; }
private IEnumerable<ItemVM> _selectedItems;
public IEnumerable<ItemVM> SelectedItems
{
    get { return _selectedItems; }
    set
    {
        _selectedItems = value;
        if (PropertyChanged != null)
            this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedItems"));
    }
}

private void EvaluateSelectedItems(object sender, RoutedEventArgs e)
{
    SelectedItems = Items.Where(item => item.IsSelected);
}