C# 删除/覆盖ListPicker项
在过去的3天里,我一直在努力删除或覆盖ListPicker值。我想要一个按钮的点击事件来删除旧的列表项并用新的填充它。我使用LINQ解析XML文件中的值。问题是,无论我尝试什么,我总是会得到一个异常,例如“操作不支持只读集合。”等等。有没有办法从ListPicker中删除所有值 代码如下:C# 删除/覆盖ListPicker项,c#,silverlight,windows-phone-7.1,windows-phone-7,C#,Silverlight,Windows Phone 7.1,Windows Phone 7,在过去的3天里,我一直在努力删除或覆盖ListPicker值。我想要一个按钮的点击事件来删除旧的列表项并用新的填充它。我使用LINQ解析XML文件中的值。问题是,无论我尝试什么,我总是会得到一个异常,例如“操作不支持只读集合。”等等。有没有办法从ListPicker中删除所有值 代码如下: public partial class Visa : PhoneApplicationPage { List<Tiedot> vastausLista = new List<Ti
public partial class Visa : PhoneApplicationPage
{
List<Tiedot> vastausLista = new List<Tiedot>();
XDocument lista = XDocument.Load("Faktat.xml");
Random rand = new Random();
int piste = 0;
int levelStart = 1;
string level = string.Empty;
// Constructor
public Visa()
{
InitializeComponent();
tbPisteet.Text = string.Format("{0}/25", piste.ToString());
level = string.Format("level{0}", levelStart.ToString());
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (levelStart <= 1)
{
var documents =
(from docs in lista.Descendants("Taso")
where docs.Attribute("id").Value == level
select new
{
Elain = docs.Elements("vaihtoehto")
}).ToList();
foreach (var doc in documents)
{
foreach (var section in doc.Elain)
{
foreach (var item in section.Elements("vastaus"))
{
vastausLista.Add(new Tiedot { Elain = item.Value });
}
}
}
vaihtoehtoLista.ItemsSource = vastausLista;
var kuvaKysymys = (from tiedot in lista.Descendants("Taso")
where tiedot.Attribute("id").Value == level
select new Tiedot
{
Kuva = (string)tiedot.Element("kuva").Value,
Question = (string)tiedot.Element("kysymys").Value
}).FirstOrDefault();
BitmapImage kuvaKuva = new BitmapImage();
kuvaKuva.UriSource = new Uri(kuvaKysymys.Kuva, UriKind.Relative);
image.Source = kuvaKuva;
tbQuestion.Text = kuvaKysymys.Question;
}
base.OnNavigatedTo(e);
}
private void vaihtoehtoLista_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (vaihtoehtoLista.SelectedIndex == 1)
{
Update();
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
UpdateLevel();
}
public void Update()
{
piste++;
tbPisteet.Text = string.Format("{0}/25", piste.ToString());
MessageBox.Show("You're correct!!");
}
public void RemoveOldLevel()
{
while (vastausLista.Count > 0)
vaihtoehtoLista.Items.Remove(vastausLista[0]);
}
public void UpdateLevel()
{
levelStart++;
level = string.Format("level{0}", levelStart.ToString());
var documents =
(from docs in lista.Descendants("Taso")
where docs.Attribute("id").Value == level
select new
{
Elain = docs.Elements("vaihtoehto")
}).ToList();
foreach (var doc in documents)
{
foreach (var section in doc.Elain)
{
foreach (var item in section.Elements("vastaus"))
{
vastausLista.Add(new Tiedot { Elain = item.Value });
}
}
}
RemoveOldLevel();
vaihtoehtoLista.ItemsSource = vastausLista;
var kuvaKysymys = (from tiedot in lista.Descendants("Taso")
where tiedot.Attribute("id").Value == level
select new Tiedot
{
Kuva = (string)tiedot.Element("kuva").Value,
Question = (string)tiedot.Element("kysymys").Value
}).FirstOrDefault();
BitmapImage kuvaKuva = new BitmapImage();
kuvaKuva.UriSource = new Uri(kuvaKysymys.Kuva, UriKind.Relative);
image.Source = kuvaKuva;
tbQuestion.Text = kuvaKysymys.Question;
}
}
公共部分类签证:电话申请页面
{
List vastausLista=新列表();
XDocument lista=XDocument.Load(“Faktat.xml”);
Random rand=新的Random();
int-piste=0;
int-levelStart=1;
字符串级别=string.Empty;
//建造师
公共签证()
{
初始化组件();
tbPisteet.Text=string.Format(“{0}/25”,piste.ToString());
level=string.Format(“level{0}”,levelStart.ToString());
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
如果(levelStart 0)
VaithToLista.Items.Remove(vastausLista[0]);
}
public void UpdateLevel()
{
levelStart++;
level=string.Format(“level{0}”,levelStart.ToString());
风险值文件=
(摘自lista.Substands(“Taso”)中的文档)
其中docs.Attribute(“id”).Value==级别
选择新的
{
Elain=docs.Elements(“vaihtoehto”)
}).ToList();
foreach(文档中的var文档)
{
foreach(文件Elain中的var部分)
{
foreach(第节要素(“vastaus”)中的var项目)
{
添加(新的Tiedot{Elain=item.Value});
}
}
}
RemoveOldLevel();
Vaithotehtolista.ItemsSource=vastausLista;
var kuvaKysymys=(来自lista.substands(“Taso”)中的tiedot)
其中tiedot.Attribute(“id”).Value==级别
选择新的Tiedot
{
Kuva=(字符串)tiedot.Element(“Kuva”).Value,
问题=(字符串)tiedot.Element(“kysymys”).Value
}).FirstOrDefault();
BitmapImage kuvaKuva=新的BitmapImage();
kuvaKuva.UriSource=新Uri(kuvaKysymys.Kuva,UriKind.Relative);
image.Source=kuvaKuva;
tbQuestion.Text=kuvaKysymys.Question;
}
}
您必须使用一个可观察集合
,其中包含您的元素,作为列表选择器的数据上下文
。大概是这样的:
ListPicker picker = new ListPicker();
ObservableCollection<Object> coll = your items inside;
picker.DataContext = coll;
但是每次更改列表的内容时,都必须重置项源
ListPicker picker = new ListPicker();
picker.ItemsSource = List<> with your items;