У меня есть класс в WCF:ListPicker и "SelectedItem всегда должен быть установлен на действительное значение"
[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 с IsolStorage, а затем загружу и применим в: 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;
}
¿Любое решение?
Ссылка на пример: PhoneApp1.rar | 666.5 KB | www.megaupload.com/?d=XDZSU3P0
Извините за мой английский.
Если я использую SelectedIndex, работайте нормально, спасибо Etch.
Но теперь проблема, если я хочу использовать:
public override bool Equals(object obj)
{
return ID == (obj as Users).ID;
}
public override int GetHashCode()
{
throw new NotImplementedException();
}
Где осуществить это, ¿в классе WCF, в видовом?
При использовании XAML:
SelectedItem={Binding SelectedUser, Mode=TwoWay}"
И в использовании видовую:
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; }
}
Благодаря
возможно дубликат [Listpicker ошибки SelectedItem всегда должен быть установлен на действительное значение] (http://stackoverflow.com/questions/7719682/listpicker-error-selecteditem -must-always-be-set-to-a-valid-value) –