XAML 代码:
<ListView.View>
<GridView x:Name="myGridView">
<GridViewColumn Width="0" DisplayMemberBinding="{Binding Id}">
<GridViewColumnHeader Content="Id" IsHitTestVisible="False" />
</GridViewColumn>
<GridViewColumn Width="50" Header="Cant">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox FontSize="11" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="300" Header="Nombre" DisplayMemberBinding="{Binding Nombre}" />
</GridView>
</ListView.View>
用来自另一个列表视图的项目填充 myListView 的 C# 代码:
private void myListView_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("myFormat"))
{
foreach (var item in e.Data.GetData("myFormat") as Dictionary<string, string>)
{
var itemC = new {Id = item.Key, Cant = "", Nombre = item.Value};
myListView.Items.Add(itemC);
myListView.SelectedItem = itemC;
}
}
}
从 myListView 检索项目的 C# 代码:
private Dictionary<string, string> GenerateArts()
{
var arts = new Dictionary<string, string>();
dynamic result = myListView.Items;
foreach (var item in result)
arts.Add((string) item.Id, (string) item.Cant);
return arts;
}
填充 myListView 后,用户可以在“Cant”列的每个文本框中写入数字,但稍后,当单击按钮并调用 GenerateArts() 时,这些数字会丢失,即 item.Cant 为“”(空字符串)每个物品。
有什么问题?
编辑:
当调用 GenerateArts() 时, item.Id 和 item.Nombre 的值按预期存在。问题出在 item.Cant 上。