【问题标题】:How can I add from a CheckBoxList to a List<>?如何从 CheckBoxList 添加到 List<>?
【发布时间】:2014-08-09 22:21:58
【问题描述】:

例如,我有一个包含 5 个复选框项目的列表:

    <ListBox x:Name="Listbox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top">
        <CheckBox x:Name="Item1" Content="Item1" Checked="Item1_Checked"/>
        <CheckBox x:Name="Item2" Content="Item2" Checked="Item2_Checked"/>
        <CheckBox x:Name="Item3" Content="Item3" Checked="Item3_Checked"/>
        <CheckBox x:Name="Item4" Content="Item4" Checked="Item4_Checked"/>
        <CheckBox x:Name="Item5" Content="Item5" Checked="Item5_Checked"/>
    </ListBox>

对于每个选中的复选框,我希望将项目添加到名为 myList 的列表中。

所以我尝试了这个:

    public MainWindow()
    {
        InitializeComponent();
    }

    List<string> myList;

    private void Item1_Checked(object sender, RoutedEventArgs e)
    {
        myList.Add(Item1);
    }

问题是,“Item1”不是一个对象,所以它不能被添加到一个对象列表中。

在我的列表中有一些对象后,我想按特定顺序对它们进行排序,例如按名称,然后在预制模板中显示列表。

有什么建议吗?

希望你能理解我,我的英语并不完美,而且我是 c# 和 wpf 的新手:P

【问题讨论】:

    标签: c# wpf checkboxlist


    【解决方案1】:

    您需要使用RoutedEventsArgs 参数的Source 属性传递给已检查的处理程序。此外,您可以对所有复选框使用相同的事件处理程序:

    <ListBox x:Name="Listbox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top">
        <CheckBox x:Name="Item1" Content="Item1" Checked="Item_Checked"/>
        <CheckBox x:Name="Item2" Content="Item2" Checked="Item_Checked"/>
        <CheckBox x:Name="Item3" Content="Item3" Checked="Item_Checked"/>
        <CheckBox x:Name="Item4" Content="Item4" Checked="Item_Checked"/>
        <CheckBox x:Name="Item5" Content="Item5" Checked="Item_Checked"/>
    </ListBox>
    
    
    private void Item_Checked(object sender, RoutedEventArgs e)
    {
        myList.Add((e.Source as CheckBox).Name);
    }
    

    可以在RoutedEventArgs.Source 中找到启动事件的控件。当然,您需要将其转换为控件类型。

    在您的特定情况下,您也可以使用sender,但通常依赖Source 属性更安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多