[英]Get Values of Multiple Selected Rows in WPF DataGrid
我正在嘗試獲取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
我無法弄清楚如何采用這種方式進行多行選擇。
將以下屬性添加到您的數據網格;
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
顯然,您必須將<>替換為集合的類型,並將<>替換為您想要的SumsViewSource的實際屬性(x.Value?)。 您還必須將函數返回類型更改為您想要的(不總是字符串列表)
我希望這至少讓你走上正確的道路。
感謝朋友,這就是我的所作所為:
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
。
它會為使用第一列(“值”)的值選擇的每一行顯示一個對話框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.