WPF列表框正确删除项目

时间:2016-05-23 18:17:42

标签: wpf listview mvvm listbox

您好我正在制作WPF应用程序并且遇到listbox/listview问题,MVVM已实施。我正在创建listbox上显示的班级列表,我正在通过选择listbox中的项目来编辑项目。问题是,当我删除一个项目时,它没有触发onpropertychanged事件到UI,但是在代码中工作,值是正确的。当我关闭窗口并重新打开它时,列表会更新,但不会在项目被删除时直接更新,它不会因某种原因触发onpropertychanged事件。

它只是过滤了像

这样的快速入侵者
quicknotelist = quicknotelist.where(x => x.id != selecteditem.id); 

它只运行一次并且UI更新但selecteditem似乎无法正常工作,即使我声明

selecteditem = new quicknote() {*values*};

部分相关代码,我正在使用INotifyPropertyChanged

  private QuickNote selectedNote = new QuickNote();  // weeeeeee
    public QuickNote SelectedNote
    {
        get
        {
            return selectedNote;
        }
        set
        {
            if (SelectedNote != null)
            {
                selectedNote = value;
                OnPropertyChanged("SelectedNote");
                EnableEditNoteBox = true;
            }
        }
    }

    private List<QuickNote> quickNoteList = new List<QuickNote>();
    public List<QuickNote> QuickNoteList
    {
        get { return quickNoteList; }
        set { quickNoteList = value; OnPropertyChanged("QuickNoteList");  }
    } 

这是删除项目的方法

private void DeleteNote(object obj)
    {
        if (SelectedNote != null) 
        {
            QuickNoteList.Remove(SelectedNote); 
   // I want this to trigger       onpropertychanged without using myclasslist = newclasslist; since it messes up selecteditem to null.

         }
     }

继承了xaml部分。

 <ListBox
    Width="713"
    Height="230"
    SelectedItem="{Binding SelectedNote, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
    ItemsSource="{Binding QuickNoteList,BindsDirectlyToSource=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
    DisplayMemberPath="Notes"
    Foreground="Black"
    ScrollViewer.VerticalScrollBarVisibility="Visible"
    ScrollViewer.HorizontalScrollBarVisibility="Disabled"
    ScrollViewer.CanContentScroll="False"/>    

1 个答案:

答案 0 :(得分:0)

如果可以,我会发表评论。您应该查找ObservableCollection。我认为QuickNoteList应该属于这种类型。