34 lines
1.0 KiB
C#
34 lines
1.0 KiB
C#
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|