using MultiTerm.Core.ViewModel; using System; using System.Windows.Controls; using System.Windows.Input; namespace MultiTerm.Wpf.View; public partial class ConsoleView : UserControl { private ConsoleViewModel? viewModel; public ConsoleView() { InitializeComponent(); } /// /// After user control finished loading, the data context is casted and stored locally. /// private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e) { // cast to correct type if (this.DataContext is not ConsoleViewModel dataContextVm) { throw new InvalidOperationException($"{nameof(ConsoleView)} got wrong type of DataContext."); } // store locally viewModel = dataContextVm; } private void SendableMessageTextBox_PreviewKeyDown(object sender, KeyEventArgs e) { // send if the key was enter if (e.Key == Key.Enter) { // do not forward key => is handled e.Handled = true; this.viewModel!.Send(); } } private void DataTextBox_TextChanged(object sender, TextChangedEventArgs e) { // scroll to end if (sender is not TextBox textBox) { return; } textBox.ScrollToEnd(); } }