簡體   English   中英

無法從ListView WPF中的選定項目獲取價值

[英]Can't get value from selected item in listview WPF

我有一個表單,用戶可以在其中輸入有關新庫存項目(id,標題,價格,日期等)的數據。 輸入的數據將保存到集合中,然后重新顯示在列表視圖中。

我得到一個“指定的轉換無效”,指向“ key =(int)lvwInventory.SelectedItems [0];” 嘗試提取所選值時。 我正在嘗試獲取ID並將其用於打開該項目的編輯窗口。

我在這里做錯了什么?

有問題的列表視圖

<ListView Height="249" HorizontalAlignment="Left" Margin="27,28,0,0" Name="lvwInventory" VerticalAlignment="Top" Width="384" ItemsSource="{Binding col}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Type}" />
            <GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}" />
            <GridViewColumn Header="Price" DisplayMemberBinding="{Binding Price}" />
            <GridViewColumn Header="Date Added" DisplayMemberBinding="{Binding Date}" />
        </GridView>
    </ListView.View>
</ListView>

股票對象類

public class StockObject
    {
        // create stock object properties
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime Date { get; set; }
        public double Price { get; set; }
        public char Type { get; set; }

試圖從選定項目中獲取價值的事件

private void btnViewItem_Click(object sender, RoutedEventArgs e)
    {
        int key;

        if (lvwInventory.SelectedIndex == -1) return;

        key = (int)lvwInventory.SelectedItems[0];

        StockObject s = col[key];
        bookDialog.View(s);
    }

所選項目是StockObject本身,這就是為什么它不允許您將其強制轉換為int的原因。 您需要這樣的東西:

var selectedStockObject = lvwInventory.SelectedItems[0] as StockObject;
if(selectedStockObject == null)
{
   return;
}

key = selectedStockObject.ID; //I'm assuming you want the ID as your key

事實是您的列表視圖與col綁定,而col恰好是StockObject的集合。 因此,您的SelectedItems[0]是一個StockObject ,而不是int

代替

key = (int)lvwInventory.SelectedItems[0];
StockObject s = col[key];

您只需要

StockObject s = (StockObject)lvwInventory.SelectedItems[0];

也許你想要SelectedItem

private void btnViewItem_Click(object sender, RoutedEventArgs e)
{
    StockObject s = lvwInventory.SelectedItem;
    if (s != null)
        bookDialog.View(s);
}

這是我的方法!

獲取列表視圖項

SearchedPurchases Purchase_Invoice = (SearchedPurchases)listView1.SelectedItems[0];
string PurchaseInvoice = Purchase_Invoice.InvoiceNo;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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