Notes/Notes.UI/Views/NoteView.axaml.cs

34 lines
1.0 KiB
C#
Raw Normal View History

2023-12-06 11:03:26 +08:00
using System;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Notes.Models;
using Notes.ViewModels;
namespace Notes.Views;
public class NoteView : TemplatedControl
{
//TemplatedControl必须在这监听比较晚创建但是实例化是一开始执行的会找不到子元素
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
{
base.OnApplyTemplate(e);
var listBox = e.NameScope.Find<ListBox>("listNotes");
if (listBox == null) throw new NullReferenceException(nameof(listBox));
listBox.AddHandler(SelectingItemsControl.SelectionChangedEvent, this.Handler);
}
private void Handler(object? sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count>0)
{
var eAddedItem = e.AddedItems[0];
if (eAddedItem is Note note)
{
if (DataContext is NoteViewModel noteViewModel)
{
noteViewModel.SelectedNote = note;
}
}
}
}
}