我有一個綁定列表框,當我添加項目它的作品完美,但如果我嘗試刪除與contextMenu的項目它不工作。ObservableCollection ListBox項刪除不工作
這是我嘗試到目前爲止列表框XAML代碼
<ListBox Name="lstPersons"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch" Margin="126,-228,2,-242">
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu Name="PersonContext">
<toolkit:MenuItem Name="PersonDelete" Header="Delete" Click="DeletePerson_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Name="btnKellnerName"
Text="{Binding _PersonName}"
FontSize="35"
FontFamily="Portable User Interface"/>
<TextBlock Name="btnPosition"
Text="{Binding _PersonPosition}"
FontSize="22"/>
<TextBlock Name="lblUhrzeit"
Text="{Binding _CreationDate}"
FontSize="18"/>
<TextBlock Name="Space" Text=" "/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
而且綁定類代碼
public class Person
{
public string _PersonName { get; set; }
public string _PersonPosition { get; set; }
public string _CreationDate { get; set; }
}
當我添加的項目,如本
ObservableCollection<Person> personList = new ObservableCollection<Person>();
personList.Add(new Person {
_PersonName = "Tom",
_PersonPosition = "Bla",
_CreationDate = "33"
});
this.lstPerson.ItemSource = personList;
它工作完美!現在我想刪除一個選定的項目與這樣的ContextMenu
private void DeletePerson_Click(object sender, RoutedEventArgs e)
{
int indexPerson = lstPerson.SelectedIndex;
personList.RemoveAt(indexPerson);
}
但它不工作。任何人都有一個想法我做錯了什麼? 感謝
玉傢伙我現在有解決方案問題是SelectedIndex的價值,現在香港專業教育學院得到了正確的價值。首先IVE把文本菜單ListBoxItemTemplate/StackPanel的內部
代碼背後:
private void DeletePerson_Click(object sender, RoutedEventArgs e)
{
try {
var selectedListBoxItem = listBox.ItemContainerGenerator.ContainerFromItem(((MenuItem) sender).DataContext) as ListBoxItem;
var selectedIndex = listBox.ItemContainerGenerator.IndexFromContainer(selectedListBoxItem);
_personList.RemoveAt(selectedIndex);
}
catch(Exception ex) { MessageBox.Show(ex.Message); };
}
不,如果你添加的項目它的工作(s)在將'personList'分配給'ItemsSource'之前?如果不是,那就是一個有約束力的問題。此外,是一個錯字 - 應該是「ItemsSource」而不是「ItemSource」。 – RobSiklos
不以什麼方式工作?例外,或沒有例外和項目仍在列表中? – weston
感謝球員的答案。我已調試它,並有問題機智listBox.SelectedIndex值是-1。所以ContextMenu是不是在正確的地方,因爲我沒有得到選定的索引 – iNCEPTION