using Avalonia; using Avalonia.Controls; using Avalonia.Layout; using Avalonia.Markup.Xaml; using InABox.Avalonia.Converters; namespace InABox.Avalonia.Dialogs; internal class TextDialogVerticalAlignmentConverter : AbstractConverter { protected override VerticalAlignment Convert(bool value, object? parameter = null) { return value ? VerticalAlignment.Top : VerticalAlignment.Center; } } public partial class TextDialogView : UserControl { private TextDialogViewModel Model => (DataContext as TextDialogViewModel)!; public TextDialogView() { InitializeComponent(); TextBox.AttachedToVisualTree += TextBox_AttachedToVisualTree; } private void TextBox_AttachedToVisualTree(object? sender, VisualTreeAttachmentEventArgs e) { TextBox.Focus(); } protected override Size MeasureOverride(Size availableSize) { var baseSize = base.MeasureOverride(availableSize); if (Model.Multiline) { return new( Double.IsPositiveInfinity(availableSize.Width) ? baseSize.Width : availableSize.Width, Double.IsPositiveInfinity(availableSize.Height) ? baseSize.Height : availableSize.Height); } return baseSize.WithWidth( Double.IsPositiveInfinity(availableSize.Width) ? baseSize.Width : availableSize.Width); } }