私はメモとテキストボックスを持つ単純なギャラリーを持ち、タイトルごとに新しいものを追加します。 私はmvvmを使用し、他のバインディングは正しく動作します。 メモのタイトルを設定してプロパティの追加をクリックすると、NewNote.Titleが更新され、オブジェクトがデータベースに保存されます。その後、私はNewNote.Titleをクリアしますが、UIは更新されません。ここWpfバインドされたプロパティが双方向モードで更新されない
が短いビデオhttps://youtu.be/l3vFwI-a4TQ
XAML
<TextBox Text="{Binding NewNote.Title}" />
ページビューモデル
class NotesPageViewModel : INotifyPropertyChanged
{
public ObservableCollection<NoteViewModel> Notes { get; set; }
public NoteViewModel NewNote { get; set; }
public NotesPageViewModel()
{
NewNote = new NoteViewModel();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
internal void LoadNotes()
{
using (var uow = new UnitOfWork())
{
Notes.Clear();
uow.NotesRepository.OrderBy(n => n.Position).ToList()
.ForEach(note => Notes.Add((NoteViewModel)note));
}
}
internal void AddNote()
{
if (string.IsNullOrWhiteSpace(NewNote.Title))
return;
using (var uow = new UnitOfWork())
{
uow.NotesRepository.Add((Note)NewNote);
uow.Complete();
}
NewNote.Title = "";
LoadNotes();
}
}
オブジェクト・ビューモデルです
class NoteViewModel : INotifyPropertyChanged
{
public int Id { get; set; }
public string Title { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
私はちょうど素晴らしいライブラリを見つけました、私は[ImplementPropertyChanged]をFodyと呼ばれるクラス宣言の上に置くことができます –