Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önceki adımda, düzenlemelerin bağlı metin denetimine yansımasını sağlamak için INotifyPropertyChanged uygulayarak gezinti önbelleğe almanın ilk yan etkisini düzelttiniz. Sayfayı gezintide önbelleğe almanın diğer yan etkisi, yeni bir not eklendiğinde veya silindiğinde not koleksiyonunun güncelleştirilmemiş olmasıdır. Bunun nedeni, daha önce not kaydedildiği ve ardından tüm kaydedilen notların yeniden okunmasıyla koleksiyonun yeniden oluşturulmasıdır. Notun durumunu izleyerek ve ardından notun eklenmesi veya silinmesi gerekip gerekmediğini belirlemek için durumu kullanarak bu sorunları düzelteceksiniz.
Tavsiye
Bu öğreticinin tamamlanmış kodunu WinUI Notları bölüm 2'deki GitHub deposundan indirebilir veya görüntüleyebilirsiniz. Projenin başlangıç ve bitiş noktaları arasındaki farkları görmek için şu işlemeye bakın: 2. bölüm güncelleştirmeleri.
Koleksiyonu güncelleştirme
İlk olarak, bir not eklendiğinde veya silindiğinde koleksiyonu güncelleştirmek için kod eklemeniz gerekir. Burada gösterildiği gibi, AllNotes.cs içine AddNote ve RemoveNote yöntemlerini ekleyin.
public class AllNotes
{
public ObservableCollection<Note> Notes { get; set; } = new ObservableCollection<Note>();
// ...
// ↓ Add this. ↓
public void AddNote(Note note)
{
// Insert the note at the beginning of the collection.
Notes.Insert(0, note);
}
public void RemoveNote(Note note)
{
Notes.Remove(note);
}
}
Note
Notes.Add , notu koleksiyonun sonuna ekler. Bunun yerine başlangıçta Insert yeni notların gösterilmesini sağlar.
Belgelerde daha fazla bilgi edinin:
Nota durum ekle
Notlar, NotePage içinde eklenir veya silinir. Ancak not koleksiyonu AllNotesPage içinde tutulur, bu nedenle yeni notları ve silinen notları AllNotesPage'e bildirmenin bir yoluna hâlâ ihtiyacınız vardır. Bunun için, State sınıfına yeni bir Note özelliği ekleyeceksiniz. Ardından, 3. adımda sayfalar arasındaki gezintiyi değiştirerek yeni veya silinmiş notları gezinti parametresi olarak geçireceksiniz.
Note.cs içine NoteState adlı yeni bir enum ekleyin. (Note sınıfının altına, ancak ad alanı parantezlerinin içine ekleyin.)
// ↓ Add this. ↓
public enum NoteState
{
Unset = 0, Unsaved, Saved, Deleted
}
sınıfına State yeni Note bir özellik ekleyin ve uygun şekilde ayarlayın:
-
Unset: Yeni not -
Unsaved: Metin değiştirildi, ancak kaydedilmedi. -
Saved: Metin değiştirilir ve dosya sistemine kaydedilir. -
Deleted: Not dosya sisteminden silindi.
// ↓ Add this. ↓
public NoteState State { get; set; } = NoteState.Unset;
// ↓ Update these. ↓
public string Text
{
get => _text;
set
{
if (_text != value)
{
_text = value;
// ↓ Add this. ↓
State = NoteState.Unsaved;
// ↑ Add this. ↑
OnPropertyChanged();
}
}
}
public async Task SaveAsync()
{
// Save the note to a file.
StorageFile noteFile = (StorageFile)await storageFolder.TryGetItemAsync(Filename);
if (noteFile is null)
{
noteFile = await storageFolder.CreateFileAsync(Filename, CreationCollisionOption.ReplaceExisting);
}
await FileIO.WriteTextAsync(noteFile, Text);
// ↓ Add this. ↓
State = NoteState.Saved;
// ↑ Add this. ↑
}
public async Task DeleteAsync()
{
// Delete the note from the file system.
StorageFile noteFile = (StorageFile)await storageFolder.TryGetItemAsync(Filename);
if (noteFile is not null)
{
await noteFile.DeleteAsync();
}
Filename = string.Empty;
// ↓ Add this. ↓
State = NoteState.Deleted;
// ↑ Add this. ↑
}
Not State da notlar ilk olarak dosya sisteminden yüklendiğinde ayarlanmalıdır. Varsayılan olarak, düzenleyicide yeni bir not oluşturulmuş ancak henüz kaydedilmemiş olduğunda StateUnset olur. Ancak, daha önce kaydedilmiş bir not dosya sisteminden yüklendiğinde, başlangıç değeri State / Saved olmalıdır.
AllNotes.cs içinde GetFilesInFolderAsync yöntemini bulun. Ardından, başlangıç Note değeri State olan yeni bir Saved nesnesi oluşturacak şekilde kodu güncelleyin.
Note note = new Note()
{
Filename = file.Name,
Text = await FileIO.ReadTextAsync(file),
Date = file.DateCreated.DateTime, // << Add a comma here.
// ↓ Add this. ↓
State = NoteState.Saved
// ↑ Add this. ↑
};
Windows developer