您好我正在制作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"/>
答案 0 :(得分:0)
如果可以,我会发表评论。您应该查找ObservableCollection。我认为QuickNoteList应该属于这种类型。