我试图获取WPF DataGrid中所有选定行的第一列("值")的值。
这是XAML:
<DataGrid x:Name="UPCs"
ItemsSource="{Binding Source={StaticResource SumsViewSource}}"
AutoGenerateColumns="False"
HeadersVisibility="Column"
IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn x:Name="Value"
Binding="{Binding Value}"
Header="Item"
Width="3*" />
<DataGridTextColumn x:Name="Qty"
Binding="{Binding Qty}"
Header="Qty"
Width="1*" />
</DataGrid.Columns>
</DataGrid>
我已经知道如何从第一个选定的行中获取所需的值:
Dim SelRow As String = DirectCast(UPCs.Columns.Item(0).GetCellContent(UPCs.SelectedValue), TextBlock).Text
我无法弄清楚如何将其用于多行选择。
答案 0 :(得分:0)
将以下属性添加到数据网格中;
SelectionMode="Extended" SelectionUnit="FullRow" SelectedCellsChanged="UPCs_OnSelectedCellsChanged"
然后创建一个事件处理程序SelectedCellsChanged,从事件处理程序传递发送者(datagrid)作为对象到以下函数;
Public Shared Function GetColumnCollection(sender As Object) As List(Of String)
Dim dataGrid As DataGrid = DirectCast(sender, DataGrid)
Dim selectedItems = dataGrid.SelectedItems
Return (From x As <<SumsViewSource type>> In selectedItems Select x.<<the property in SumsViewSource>>).ToList()
End Function
显然,您必须更换&lt;&gt;与您的收藏类型和&lt;&gt;你想要的SumsViewSource的实际属性(x.Value?)。您还必须将函数返回类型更改为您想要的(不总是字符串列表)
我希望这至少让你走上正确的道路。
答案 1 :(得分:0)
感谢朋友,我的所作所为:
For Each Row As DataRowView In UPCs.SelectedItems
If Row IsNot Nothing Then
Dim x As String = Row.Row("Value")
MessageBox.Show(x)
End If
Next
并在课程上方添加Imports System.Data
。
它会为使用第一列的值选择的每一行显示一个对话框(&#34;值&#34;)。