Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 在Windows phone 7中更改列表框的选定项_List_Windows Phone 7_Listbox_Selecteditem - Fatal编程技术网

List 在Windows phone 7中更改列表框的选定项

List 在Windows phone 7中更改列表框的选定项,list,windows-phone-7,listbox,selecteditem,List,Windows Phone 7,Listbox,Selecteditem,我需要从包含类对象的列表框中选择一个项。这是我的密码: 加载事件: private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { XDocument loadedData = XDocument.Load("file.xml"); var data = from query in loadedData.Descendants("element")

我需要从包含类对象的列表框中选择一个项。这是我的密码:

加载事件:

  private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
  {
      XDocument loadedData = XDocument.Load("file.xml");
      var data = from query in loadedData.Descendants("element")
                 select new myClass
                 {
                     First = (string)query.Element("first"),
                     Second = (string) query.Element("second")
                 };
      List<myClass> d = data.ToList<myClass>();
      myList = d; 
      myListBox.ItemsSource = data;            
  }

我在这里做错了什么吗?

为了提高效率,我会将ItemsSource设置为“d”,而不是“data”。linq查询返回的枚举是惰性的,因此每次UI更新时都会对其进行计算。您所拥有的阵列是急切创建的,因此以后的查找速度很快

这里看起来像个小虫子。我能够不停地重复一个类似的问题

我将标准VS模板用于数据绑定应用程序。该模板附带一些示例数据和一个填充的列表框。我添加了一个按钮,将所选项目设置为集合中的第15个项目。这一切如期而至。但是,当我将列表滚动到顶部时,当我单击按钮时,它不会返回到第15条记录。猜猜看,你遇到的是同一问题的另一个症状

为了解决这个问题,我首先将SelectedIndex设置为-1,这实际上是取消选择该项

private void button1_Click(object sender, RoutedEventArgs e)
{
    myListBox.SelectedIndex = -1;
    myListBox.SelectedItem = myList[100];
}
我很好奇这是否也能解决你的问题

myList不是您绑定到列表的集合。 或者将d设置为范围更广的变量,并参考按钮1中的变量 或 将数据存储在myList中,而不是其副本

private void button1_Click(object sender, RoutedEventArgs e)
{
    myListBox.SelectedIndex = -1;
    myListBox.SelectedItem = myList[100];
}