簡體   English   中英

在WPF DataGrid中獲取多個選定行的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM