0
C#
WPF
我有一個列表視圖,其中有3列。我想要發生的是當我雙擊一行時,它會捕獲所選行的列值並將它們存儲爲變量,以便我可以將它們傳遞到另一個頁面或根據需要簡單地操作它們。我在這裏的是我的練習代碼。現在,我只是填充一個消息框,以查看是否可以正確地獲取變量。正在發生的事情是它不會從行中攫取任何東西。我想通過刪除if
塊並且看到string name = selectedObject.ilName;
爲空來解決這個問題。我有一個額外的問題是關於ingListLV.SelectedItems[0] as InventoryList
聲明[0],究竟是指什麼?我初步認爲它引用了它返回的值,所以[0]將是第1列中的值,[1]將是第2列等,但我知道這是錯誤的。捕獲Listview行的內容作爲變量
這裏是我的XAML
<ListView x:Name="ingListLV" HorizontalAlignment="Center" Height="100" Margin="0,145,0,0" VerticalAlignment="Top" Width="Auto"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
SelectedValuePath="InventoryName"
Style="{DynamicResource listViewStyle}"
MouseDoubleClick="Open_Edit">
<ListView.View>
<GridView>
<GridViewColumn x:Name="InvName" Width="100" Header="Name" DisplayMemberBinding="{Binding Path=InventoryName}" />
<GridViewColumn Width="50" Header="Qty" DisplayMemberBinding="{Binding Path=Qty}" />
<GridViewColumn Width="50" Header="Type" DisplayMemberBinding="{Binding Path=Type}" />
</GridView>
</ListView.View>
</ListView>
背後
private void Open_Edit(object sender, RoutedEventArgs e)
{
var selectedObject = ingListLV.SelectedItems[0] as InventoryList;
if (selectedObject == null)
{
return;
}
string name = selectedObject.ilName;
MessageBox.Show(name);
}
public class InventoryList
{
public string ilName { get; set; }
public decimal ilQty { get; set; }
public string ilType { get; set; }
}
編輯 這裏是我在給ListView
private void LoadLV()
{
auroraDataEntities = new AuroraDataEntities();
ObjectQuery<Inventory> inventories = auroraDataEntities.Inventories;
//Returns only opjects with a quantity greater than 0, so it won't show anything you are out of
var fillList = from q in inventories
where q.Qty > 0
select q;
ingListLV.ItemsSource = fillList.ToList();
}
所以在我的xaml中,我設置了'SelectionMode =「Single」'。並在上面的代碼中進行了所選的更改。它仍然填充爲空。當我正在瀏覽代碼時,我注意到'iList'沒有填充任何東西,所以它看起來仍然有問題從列表視圖中獲取值。 –
什麼是iList?我希望這是DataContext中的列表,因爲您的ItemsSource綁定到DataContext中的對象。你在ListView中看到行嗎?如果你能選擇一個項目/一行? – LPL
'iList'在類InventoryList中聲明。是的,我可以在ListView中看到行,是的,我可以在列表視圖中雙擊,並啓動'open_edit'方法,但它不會從列表視圖中拉取值 –