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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |