C# 单击多个复选框后,如何以字符串格式(list<;string>;或任何其他逻辑数据结构)存储listview行项目

C# 单击多个复选框后,如何以字符串格式(list<;string>;或任何其他逻辑数据结构)存储listview行项目,c#,wpf,listview,gridview,C#,Wpf,Listview,Gridview,以下是我试图实现的目标。我使用ListView构建了一个视图,并将ListView的ItemSource与XML文件绑定,以便它将XML内容显示为ListView项。此外,我还在ListView中提供了GridView列,以便为每个XML内容设置复选框和文本框 下面是用于此的xaml代码 <Window.Resources> <!--XML Data Source--> <XmlDataProvider x:K

以下是我试图实现的目标。我使用ListView构建了一个视图,并将ListView的ItemSource与XML文件绑定,以便它将XML内容显示为ListView项。此外,我还在ListView中提供了GridView列,以便为每个XML内容设置复选框和文本框

下面是用于此的xaml代码

    <Window.Resources>
            <!--XML Data Source-->
            <XmlDataProvider x:Key="InstrumentList" Source="Instrumentlist.xml"/>
        </Window.Resources>
        <Grid>

            <ListView Height="153" 
                  HorizontalAlignment="Left" 
                  Name="listView1" 
                  VerticalAlignment="Top" 
                  Width="503"
                  ItemsSource="{Binding Source={StaticResource InstrumentList}, XPath=instrument/instruments}">
                <ListView.View>
                    <GridView>
                        <GridView.Columns>
                            <GridViewColumn x:Name="g1" >
                                <GridViewColumn.HeaderTemplate>
                                    <DataTemplate >
                                        <CheckBox x:Name="checkall" />
                                    </DataTemplate>
                                </GridViewColumn.HeaderTemplate>
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <CheckBox IsChecked="False"/>

                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn  Header="Instrref" />
                            <GridViewColumn Width="120" Header="OrderLimit">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBox Name="txt_OrderLimit" Width="100"/>

                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Width="120" Header="ValueLimit">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBox Name="txt_ValueLimit" Width="100"/>

                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>

                        </GridView.Columns>


                    </GridView>
                </ListView.View>
            </ListView>
            <Button x:Name="button" Content="Submit" HorizontalAlignment="Left" Margin="0,174,0,0" VerticalAlignment="Top" Width="194" Click="button_Click"/>
        </Grid>
    </Window>

上面我们在GridView datatemplate中有复选框和两个文本框。当我对复选框进行多次检查时,我希望检索xml数据内容以及文本框内容,以便存储在一些有用的资源中,以便以后可以访问它

XML文件内容:

    <?xml version="1.0" encoding="utf-8" ?>
    <instrument>

      <instruments>
      <instrument_reference>NIFTY12SEP8700CE</instrument_reference>
      </instruments>
      <instruments>
      <instrument_reference>NIFTY12SEP8600CE</instrument_reference>
      </instruments>
      <instruments>
      <instrument_reference>NIFTY12SEP8900CE</instrument_reference>
      </instruments>
      <instruments>
        <instrument_reference>NIFTY12SEP9000CE</instrument_reference>
      </instruments>
      <instruments>
        <instrument_reference>NIFTY12SEP9100CE</instrument_reference>
      </instruments>
      <instruments>
        <instrument_reference>NIFTY12SEP9200CE</instrument_reference>
      </instruments>
    </instrument>

NIFTY12SEP8700CE
NIFTY12SEP8600CE
NIFTY12SEP8900CE
NIFTY12SEP9000CE
NIFTY12SEP9100CE
NIFTY12SEP9200CE
您可以在提供的屏幕截图中看到视图的外观。我想对复选框进行多次检查,并向文本框提供输入,以便在我单击“提交”按钮时,在“按钮单击”事件中,我应该能够获得存储在datatable中的-INSTRUMENT REF、TEXTBOX-ORDERLIMIT、TEXTBOX-VALUELIMIT值,列表或任何方便的资源,以供以后使用


请帮助我如何访问这些元素值

首先在您的
checkAll
上放置一个事件处理程序,相应地进行设置,并为您的
GridView
命名。比如:

XAML 然后,您可以冲洗并重复该操作,从文本框中获取字符串值,并将其分配到
列表中,如:

private void button_Clicked(object sender, RoutedEventArgs e)
{
    List<string> lstContent = new List<string>();
    foreach (GridViewColumn gvc in gvMyGridView.Children)
    {
        foreach (CellTemplate ct in gvc)
        {
            foreach (Checkbox cb in ct)
            {
                if (cb.IsChecked == true)
                    lstContent.Add(/*Corresponding Text Box*/.Content.ToString();
            }
        }
    }
}
private void按钮\u单击(对象发送者,路由目标)
{
List lstContent=新列表();
foreach(gvMyGridView.Children中的GridViewColumn gvc)
{
foreach(全球价值链中的细胞模板ct)
{
foreach(ct中的复选框cb)
{
如果(cb.IsChecked==true)
lstContent.Add(/*对应的文本框*/.Content.ToString();
}
}
}
}

希望这能有所帮助。让我知道会发生什么,如果你需要更多帮助,我会尽我所能

:这不起作用。由于这是WPF cntrls hr,我在使用此方法时会遇到什么错误。1.内部私有无效检查所有检查(对象发送方,RoutedEventArgs e)//**checkAll不可访问,因为它位于DataTemplate内。我知道这一点,因为我试图以相当简单的方式访问它,但未能访问**/。其次是“gvMyGridView.Children”给出错误-'GridView dsnt contain'GridView'的定义不包含'Children'的定义,并且没有扩展方法'Children'接受类型为的第一个参数,随后CellTemplate不能被fnd。@Geoff
private void checkAll_Checked(object sender, RoutedEventArgs e)
{
    if (checkAll.IsChecked == true)
    {
        foreach (GridViewColumn gvc in gvMyGridView.Children)
        {
            foreach (CellTemplate ct in gvc)
            {
                foreach (Checkbox cb in ct)
                {
                    cb.IsChecked = true;
                }
            }
        }
    }
}
private void button_Clicked(object sender, RoutedEventArgs e)
{
    List<string> lstContent = new List<string>();
    foreach (GridViewColumn gvc in gvMyGridView.Children)
    {
        foreach (CellTemplate ct in gvc)
        {
            foreach (Checkbox cb in ct)
            {
                if (cb.IsChecked == true)
                    lstContent.Add(/*Corresponding Text Box*/.Content.ToString();
            }
        }
    }
}