splitter/Splitter-UI/Views/LogPane.axaml.cs

32 lines
727 B
C#

using Avalonia.Controls;
using Avalonia.Threading;
namespace Splitter_UI.Views;
public partial class LogPane : UserControl
{
public LogPane()
{
InitializeComponent();
// When DataContext changes, subscribe to collection changes
this.DataContextChanged += (_, _) =>
{
if (DataContext is LogPaneViewModel vm)
{
vm.Logs.CollectionChanged += (_, _) => ScrollToEnd();
}
};
}
private void ScrollToEnd()
{
// Must run after layout pass
Dispatcher.UIThread.Post(() =>
{
if (Scroller != null)
Scroller.ScrollToEnd();
}, DispatcherPriority.Background);
}
}