Помощь с привязкой данных в DataGrid
Xaml разметка
<PivotItem Header="Пользователи">
<controls:DataGrid x:Name="usersList" AutoGenerateColumns="True" ItemsSource="{x:Bind Users2List}">
</controls:DataGrid>
</PivotItem>
Требуется произвести десериализацию в DataGrid с помощью конструкции показанной далее:
public class Users2
{
public String FirstName { get; set; }
public String Login { get; set; }
public String Password { get; set; }
public Users2(String firstName, String login, String password)
{
this.FirstName = firstName;
this.Login = login;
this.Password = password;
}
}
public List<Users2> Users2List;
Есть метод, который десериализует список пользователей.
async void UnloadUsers()
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile storageFile = await storageFolder.GetFileAsync("Users.xml");
Stream stream = await storageFile.OpenStreamForReadAsync();
List<Users> users = new List<Users>();
XmlSerializer xml = new XmlSerializer(typeof(List<Users>));
users = (List<Users>)xml.Deserialize(stream);
foreach (Users users1 in users)
{
Users2List = new List<Users2> { new Users2(users1.firstName, users1.login, users1.password) };
}
}
Думаю не правильно написал следующую строку кода.
Users2List = new List<Users2> { new Users2(users1.firstName, users1.login, users1.password) };
Буду рад дополнить и ответить на ваши вопросы.
Ответы (2 шт):
Автор решения: S.H.
→ Ссылка
Да, похоже, Вы правильно определили ошибку.
Похоже, что правильно было бы так:
users = (List<Users>)xml.Deserialize(stream);
Users2List = new List<Users2>();
foreach (Users users1 in users)
Users2List.Add(new Users2(users1.firstName, users1.login, users1.password));
Автор решения: 7Lucky7
→ Ссылка
Решением оказалось заново присвоить DataGrid свойство ItemsSource
usersList.ItemsSource = Users2List;
Отрезок кода из метода void UnloadUsers()
users = (List<Users>)xml.Deserialize(stream);
Users2List = new List<Users2>();
foreach (Users users1 in users)
{
Users2List.Add(new Users2(users1.firstName, users1.login, users1.password));
}
usersList.ItemsSource = Users2List;