我很新的Windows Phone編程,並且在編輯ListBox中的數據時遇到問題。
我從我的XML文件中加載數據到列表中,並將它們顯示在列表框中。
我的XML中的每個條目都附有一個類型。我想要這樣做,所以我可以通過選中/取消選中某些CheckBox來刪除/添加某些類型的條目。使用複選框過濾ListBox.ItemsSource
,我發現這樣的事情:
How to remove all ListBox items?
但它並不完全適合我的需要,因爲我只想要刪除的列表框項目的一部分,然後可能拿回來,只需再次選中複選框。
另外,我不想手動添加每個條目,因爲我已經將列表框與包含我的XML條目的列表綁定。
我上傳我的XML像這樣:
Activity.cs
:
namespace ReadXMLfromFile
{
public class Activity
{
public string Type { get; private set; }
public string Description { get; private set; }
public Activity(string type, string description)
{
Type = type;
Description = description;
}
public static List<Activity> LoadActivities(XDocument doc)
{
return doc .Root
.Elements("Activity")
.Select(el => new Activity((string)el.Attribute("Type"),
el.Value))
.ToList();
}
public static List<Activity> LoadActivities()
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (store.FileExists("Activities.xml"))
{
using (var stream = store.OpenFile("Activities.xml",
FileMode.Open))
{
return LoadActivities(XDocument.Load(stream));
}
}
}
// No user file... load the default activities
return LoadActivities(XDocument.Load("Assets/Activities.xml"));
}
}
}
這是我爲我的網頁代碼:
namespace ActivityManager
{
public partial class PivotPage1 : PhoneApplicationPage
{
private List<Activity> activities;
public void ActivityDisplay()
{
activities = Activity.LoadActivities();
listBox1.ItemsSource = activities;
}
public PivotPage1()
{
InitializeComponent();
ActivityDisplay();
}
private void CookingCheck_Checked(object sender, RoutedEventArgs e)
{
}
private void ArtCheck_Checked(object sender, RoutedEventArgs e)
{
}
private void LanguageCheck_Checked(object sender, RoutedEventArgs e)
{
}
private void ScienceCheck_Checked(object sender, RoutedEventArgs e)
{
}
private void SportCheck_Checked(object sender, RoutedEventArgs e)
{
}
和XAML的列表框:
<ListBox Height="347" HorizontalAlignment="Left" Margin="27,243,0,0"
Name="listBox1" VerticalAlignment="Top" Width="410"
SelectionChanged="listBox1_SelectionChanged" AllowDrop="False"
ItemsSource="{Binding activities}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10">
<TextBlock Text="{Binding Activity}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
另外這裏是我的XML文件
<?xml version="1.0" encoding="utf-8" ?>
<Activities>
<Activity Type="Cooking">
Cook some Mexican food
</Activity>
<Activity Type="Art">
Draw a picture
</Activity>
<Activity Type="Language">
Learn 5 words in Polish you didn't know yet
</Activity>
<Activity Type="Science">
Write a simple program in C
</Activity>
<Activity Type="Sport">
Go to the gym
</Activity>
</Activities>
你能幫我嗎?我相當卡住,可能錯過了一些明顯的東西。先謝謝你。
請把斷點在列表你檢查過的事件和FilterActivity Happend後檢查ItemsSource不是空的,並有對象在它 – csharpwinphonexaml
@verdesrobert原來,在檢查事件源是空的。 FilterActivity發生後,最終會有對象。 – Tajgun92