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>
使用另一个listview中的项填充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。
答案 0 :(得分:1)
将Cant
绑定到TextBox.Text
属性,如下所示。
XAML:
<GridViewColumn Width="50" Header="Cant">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox FontSize="11" Text="{Binding Cant}" MinWidth="30"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
代码背后的变化:
var itemC = new MyData() { Id = item.Key, Cant = "", Nombre = item.Value };
MyData class
public class MyData
{
public string Id { get; set; }
public string Cant { get; set; }
public string Nombre { get; set; }
}
答案 1 :(得分:-1)
您是否在page_load事件中使用if(!IsPostBack)?也许你再次绑定数据?