我已经搜索了一段时间,但我觉得每个有类似问题的人都在使用数据库或需要其他特殊情况。如果我只是误会,那么我为重复的问题道歉。
我有一个DataGrid.ItemsSource,我设置等于List<(Entry)> - ()其中entry是三个字符串的结构。
一切都很完美,DataGrid正确显示所有内容。但是,我打算允许用户根据需要编辑每个单元格中的数据,然后按"保存"按钮将该数据保存回List<(Entry)>。不幸的是,似乎旧的ItemsSource仍在那里。
那么......我如何访问新数据?这是我的代码。 EntryGrid是我的DataGrid。
public struct Entry
{
public string Username { get; set; }
public string Password { get; set; }
public string Description { get; set; }
}
private void createTable()
{
List<Entry> data = new List<Entry>();
data.Add(new Entry() { Description = "StackOverflow", Username = "TieRein", Password = "LetMeIn" });
data.Add(new Entry() { Description = "AnotherStackOverflow", Username = "NewTieRein", Password = "DontLetMeIn" });
EntryGrid.ItemsSource = data;
}
private void SaveFile(bool confirmation)
{
EntryGrid.Items.Refresh();
List<Entry> Save = new List<Entry>();
Save = (List<Entry>)EntryGrid.ItemsSource;
string filename = "../../../" + m_profile;
using (var file = File.OpenWrite(filename))
{
var writer = new BinaryFormatter();
writer.Serialize(file, Save);
}
if (confirmation)
MessageBox.Show("Account Saved");
}
答案 0 :(得分:2)
您正在使用数据的结构列表,它们按值传递。当您的绑定更新数据时,它不会修改原始结构,而是在绑定实现中的某处修改结构的一些副本。
使用班级来保存您的数据:
public class Entry
{
public string Username { get; set; }
public string Password { get; set; }
public string Description { get; set; }
}