У меня есть класс в WCF:
[DataContract]
public class Usuario
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Nombre { get; set; }
[DataMember]
public string Contraseña { get; set; }
}
В WP7 Proyect прочитайте ObservableCollection из WCF и загрузите ListPicker с помощью:
lpUsuarios.ItemSource = listUsuarios;
Это нормально работает.
Теперь в WP7 используйте «Usuario _usuario = new Usuario ()» для локальной переменной.
Проблема в том, что если я сохраню переменную _usuario с помощью IsolatedStorage, а затем загрузлю и подам в: lpUsuarios.SelectedItem = _usuario,вызывает ошибку: SelectedItem всегда должен быть установлен в допустимое значение.
Пример:
Usuarios _usuario = new Usuario();
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
var settings = IsolatedStorageSettings.ApplicationSettings;
_usuario = lpUsuarios.SelectedItem as Usuario;
settings.Add("test", _usuario);
settings.Save();
}
Теперь закройте приложение и затем откройте:
private void ButtonLoad_Click(object sender, RoutedEventArgs e)
{
settings.TryGetValue<Usuario>("test", out _usuario);
lpUsuarios.SelectedItem = _usuario; <--- ERROR SelectedItem must....
}
ВОтладка vs2010, при открытии приложения и загрузке переменной _usuario, значение верное, но не работает.
Ошибка в: Для SelectedItem всегда должно быть установлено допустимое значение в ListPicker.cs
Расположение в ListPicker.cs:
// Synchronize SelectedIndex property
if (!_updatingSelection)
{
_updatingSelection = true;
SelectedIndex = newValueIndex;
_updatingSelection = false;
}
Любое решение?
Если я использую SelectedIndex, работать нормально, спасибо Etch.
Но теперь проблема заключается в том, если я хочу использовать:
public override bool Equals(object obj)
{
return ID == (obj as Users).ID;
}
public override int GetHashCode()
{
throw new NotImplementedException();
}
Где реализовать это, ¿в WКласс CF, в ModelView?
В XAML используется:
SelectedItem={Binding SelectedUser, Mode=TwoWay}"
А в ModelView используется:
private Usuario selectedUser;
public Usuario SelectedUser
{
get
{
return selectedUser;
} //----------------if i use modelview, the error is produced here
set
{
selectedUser= value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("SelectedUser"));
}
}
}
Класс WCF:
[DataContract]
public class Usuario
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Nombre { get; set; }
[DataMember]
public string Contraseña { get; set; }
}