C#
WPF
3列のリストビューがあります。行をダブルクリックすると、選択した行の列の値がキャプチャされ、変数として保存されるため、別のページに渡すか、必要に応じて単純に操作できます。ここにあるのは私の練習コードです。今のところ、変数を正しく取得できるかどうかを確認するために、メッセージ ボックスにデータを入力しています。何が起こっているかというと、行から何も取得していません。if
ブロックを削除してこれを理解し、それstring name = selectedObject.ilName;
がnullであることがわかりました。私が持っている追加の質問は、[0]というステートメントに関してingListLV.SelectedItems[0] as InventoryList
です。それは正確には何を指していますか? 最初は、返された値を参照していると思っていたので、[0] は列 1 の値、[1] は列 2 などになりますが、それが間違っていることはわかっています。
これが私の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; }
}
編集 ここで、リストビューにデータをロードしています
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();
}