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