我目前正在尝试从绑定列表中删除项目。
这是它在xaml中绑定的位置。
<ListBox Height="362" HorizontalAlignment="Left" Margin="6,245,0,0" Name="lstHoldCategories" VerticalAlignment="Top" Width="462" SelectionChanged="list_SelectionChanged_1" BorderThickness="0,0,0,0">
<ListBox.ItemTemplate>
<DataTemplate>
<!--This positions the Text eg name etc-->
<StackPanel Orientation ="Vertical">
<!--This changes the size of the photo on the left-->
<Image Width="445" Height="300" HorizontalAlignment="Center" Stretch="UniformToFill" >
<Image.Source>
<BitmapImage UriSource="{Binding imgSource}"/>
</Image.Source>
</Image>
<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}" Width="1000" />
<TextBlock Text="{Binding Type}" Style="{StaticResource PhoneTextLargeStyle}" Width="1000" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然后,我在一个单独的未绑定列表框中创建了一个单独的通用列表,以便我可以选择“类型”并加载该类型的所有动物。
以下是我设置未绑定列表的代码
public CategorySearch()
{
InitializeComponent();
observablePets = new ObservableCollection<Shop>();
temp = new ObservableCollection<Shop>();
MyList.Add("Dog");
MyList.Add("Cat");
MyList.Add("Fish");
MyList.Add("Lizard");
lstCategory.ItemsSource = MyList;
}
这就是我已经完成了未绑定列表框的SelectedIndex以添加所选“类型”的动物
private void lstCategory_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (lstCategory.SelectedIndex == 0)
{
foreach (Shop pet in thisApp.myshop)
{
if (pet.Type == "Dog")
{
//lstHoldCategories.Items.Clear();
temp.Add(pet);
lstHoldCategories.ItemsSource = temp;
}
}
}
if (lstCategory.SelectedIndex == 1)
{
foreach (Shop pet in thisApp.myshop)
{
if (pet.Type == "Cat")
{
//lstHoldCategories.Items.Clear();
temp.Add(pet);
lstHoldCategories.ItemsSource = temp;
}
}
}
if (lstCategory.SelectedIndex == 2)
{
foreach (Shop pet in thisApp.myshop)
{
if (pet.Type == "Fish")
{
//lstHoldCategories.Items.Clear();
temp.Add(pet);
lstHoldCategories.ItemsSource = temp;
}
}
}
if (lstCategory.SelectedIndex == 3)
{
foreach (Shop pet in thisApp.myshop)
{
if (pet.Type == "Lizard")
{
//lstHoldCategories.Items.Clear();
temp.Add(pet);
lstHoldCategories.ItemsSource = temp;
}
}
}
}
正如你在这段代码中看到的那样,我已经注释掉了我认为会清空selectedIndex上的listBox并使用新选择重新加载listBox的代码片段。不幸的是,当您选择索引时,它无法正常运行并崩溃应用程序。
如果有一种不同的方法来清空绑定的listBox,我会很感激有人建议我怎么做, 提前致谢, 杰森
////照片管理\\ 这是在选择索引之前页面的样子
这是选择索引时绑定listBox的样子
答案 0 :(得分:1)
您需要清除集合本身,而不是绑定到集合的对象。快速搜索出现了这个...... Delete all items from listobox
为了澄清,Items集合存在于ListBox上,该属性是readonly。因此,您需要从ListBox实际绑定的集合中删除项目
在添加新项目之前,您应该能够在temp上调用clear。但是您需要确保您的集合源实现INotifyCollectionChanged以查看UI中反映的更改。