Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将复选框列表添加到列表<>;?_C#_Wpf_Checkboxlist - Fatal编程技术网

C# 如何将复选框列表添加到列表<>;?

C# 如何将复选框列表添加到列表<>;?,c#,wpf,checkboxlist,C#,Wpf,Checkboxlist,例如,我有一个包含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" Conte

例如,我有一个包含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);
    }
public主窗口()
{
初始化组件();
}
列出我的清单;
已选中私有无效项1(对象发送方,路由目标e)
{
添加(第1项);
}
问题是,“Item1”不是对象,因此无法将其添加到对象列表中

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

有什么建议吗


希望您理解我的意思,我的英语不是很好,而且我是c#和wpf的新手:p

您需要使用传递给选中处理程序的
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);
}

已选中私有无效项(对象发送者,路由目标e)
{
添加((e.Source作为复选框).Name);
}
启动事件的控件可在
RoutedEventArgs.Source
中找到。当然,您需要将其强制转换为控件类型

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