【发布时间】:2016-08-17 20:06:20
【问题描述】:
我正在开发一个 wpf 应用程序,并且我有一个名为 datagrid 的“买家”,我希望在选中复选框时访问行值
我已经阅读了一些关于 stackoverflow 的问题,但都超出了我的想象,我无法将它们理解为 amatuer :(
这是我的数据网格 xaml 代码:-
<DataGrid x:Name="buyer" SelectionMode="Single" HorizontalAlignment="Left" SelectionUnit="FullRow" VerticalAlignment="Top" Height="550" Width="992" HorizontalScrollBarVisibility="Visible" IsReadOnly="True" AutoGenerateColumns="False" FrozenColumnCount="1" Margin="0,45,0,0" SelectionChanged="RowFocus" TargetUpdated="buyer_TargetUpdated">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Joining" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="ID" Binding="{Binding buy_id}"/>
<DataGridTextColumn Header="Name" Binding="{Binding bname}"/>
<DataGridTextColumn Header="Number" Binding="{Binding mobileno}"/>
</DataGrid.Columns>
</DataGrid>
我在同一个窗口上有一个按钮,单击该按钮应该会从选中 CheckBox 的行中为我提供值
编辑:目前,我正在通过在控制台中写入来检查 CheckBox 是否正在工作。 CheckBox 也应该是第 0 列,对吧?但是当我在控制台中打印它时,我得到了下一列的值,即 ID,我曾经通过输入以下代码来打印该值:-
private void Button_Click_3(object sender, RoutedEventArgs e)
{
/* int i = 0;
Console.WriteLine("hey");
foreach (var item in buyer.Items)
{
string s = (buyer.Items[i] as DataRowView).Row.ItemArray[0].ToString();
if (i==0)
{
Console.WriteLine(s);
var row = buyer.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
}
i++;
}*/
if (buyer.SelectedItems.Count > 0)
{
for (int i = 0; i < buyer.SelectedItems.Count; i++)
{
System.Data.DataRowView selectedFile = (System.Data.DataRowView)buyer.SelectedItems[i];
string str = Convert.ToString(selectedFile.Row.ItemArray[0]);
Console.WriteLine(str);
}
}
}
I used both commented and uncommented code
【问题讨论】:
-
能否也包含点击按钮时执行的代码?
-
好的,等我把它添加到问题中
-
您将获得第 1 列 (ID),因为 ItemArray 指向该列 (Row.ItemArray[1])。使用 ItemArray 索引遍历列。
-
@ErnestoDeLucia 但我在单元格数组中放了 0,对吗?那是 dat 发生的,另见我编辑的问题..
-
当你遍历 items 数组时,你会得到多少列?除了 ID 之外,其他列的值是您期望的吗?
标签: c# wpf xaml checkbox datagrid