ListPicker和 “的SelectedItem必须设置为一个有效的值”
我在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读取WCF的ObservableCollection和加载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;
}
¿任何解决方案?
链接举例: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; }
}
感谢
您的收藏没有,你要选择的项目。即使看起来一样,闻起来也一样,但它是一个不同的对象。您的用户类必须重载equals方法是:
public class Users
{
public int ID { get; set; }
public string Nombre { get; set; }
public override bool Equals(object obj)
{
return ID == (obj as Users).ID;
}
public override int GetHashCode()
{
throw new NotImplementedException();
}
}
的
你不能选择的项目是不是其中的一项e集合绑定到ItemsSource。
我如何选择价值商店?我在megaupload中添加了一个示例:www.megaupload.com/?d=XDZSU3P0。 – Sulivan 2011-12-13 17:44:11
前几天我遇到了这个问题。确切的问题。 Listpicker中存在一个错误。我在家里有一个链接,详细介绍了它的细节,但简单的解决方法是做你所做的事情,而不是使用SelectedIndex
属性。
可能重复[Listpicker错误的SelectedItem必须始终设置为有效值(http://*.com/questions/7719682/listpicker-error-selecteditem必须始终设置为有效值) – 2014-01-19 19:50:30