POC checkmark visibility
MODIFY
WalletWasabi.Fluent/AddWallet/CreateWallet/ConfirmRecoveryWordsView.axaml
WalletWasabi.Fluent/AddWallet/CreateWallet/ConfirmRecoveryWordsView.axaml
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel Margin="0 0 0 20" HorizontalAlignment="Left">
- <PathIcon Classes="textBoxCheckMark" Margin="15 45 0 0" VerticalAlignment="Top" DockPanel.Dock="Right"/>
+ <PathIcon Classes="checkMark" Margin="15 45 0 0" VerticalAlignment="Top" DockPanel.Dock="Right" IsVisible="{Binding IsConfirmed}" />
<Label Content="{Binding Index, StringFormat=Recovery word {0}}" DockPanel.Dock="Top"/>
<TextBox Watermark="Type the word here..." Text="{Binding Input}" DockPanel.Dock="Top" IsEnabled="{Binding !IsConfirmed}" Width="280" FontSize="12">
<i:Interaction.Behaviors>

ADD
WalletWasabi.Fluent/Behaviors/CheckMarkVisibilityBehavior.cs
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Input;
+using Avalonia.Xaml.Interactivity;
+using ReactiveUI;
+using System;
+using System.Collections.Generic;
+using System.Reactive.Disposables;
+using System.Reactive.Linq;
+using System.Text;
+
+namespace WalletWasabi.Fluent.Behaviors
+{
+ public class CheckMarkVisibilityBehavior : AttachedToVisualTreeBehavior<PathIcon>
+ {
+ public static readonly StyledProperty<bool> HasErrorsProperty =
+ AvaloniaProperty.Register<CheckMarkVisibilityBehavior, bool>(nameof(HasErrors), false);
+
+ public static readonly StyledProperty<bool> IsFocusedProperty =
+ AvaloniaProperty.Register<CheckMarkVisibilityBehavior, bool>(nameof(IsFocused), false);
+
+ public static readonly StyledProperty<string> TextProperty =
+ AvaloniaProperty.Register<CheckMarkVisibilityBehavior, string>(nameof(Text), "");
+
+ public bool HasErrors
+ {
+ get => GetValue(HasErrorsProperty);
+ set => SetValue(HasErrorsProperty, value);
+ }
+
+ public bool IsFocused
+ {
+ get => GetValue(IsFocusedProperty);
+ set => SetValue(IsFocusedProperty, value);
+ }
+
+ public string Text
+ {
+ get => GetValue(TextProperty);
+ set => SetValue(TextProperty, value);
+ }
+
+ public static readonly StyledProperty<TextBox> OwnerTextBoxProperty =
+ AvaloniaProperty.Register<CheckMarkVisibilityBehavior, TextBox>(nameof(OwnerTextBox), null!);
+
+ public TextBox OwnerTextBox
+ {
+ get => GetValue(OwnerTextBoxProperty);
+ set => SetValue(OwnerTextBoxProperty, value);
+ }
+
+ protected override void OnAttachedToVisualTree()
+ {
+ this.WhenAnyValue(
+ x => x.HasErrors,
+ x => x.IsFocused,
+ x => x.Text)
+ .Subscribe(_ => AssociatedObject!.IsVisible = !HasErrors && !IsFocused && !string.IsNullOrEmpty(Text));
+
+ Observable
+ .FromEventPattern<AvaloniaPropertyChangedEventArgs>(OwnerTextBox, nameof(OwnerTextBox.PropertyChanged))
+ .Select(x => x.EventArgs)
+ .Where(x => x.Property.Name == "HasErrors")
+ .Subscribe(x => HasErrors = (bool)x.NewValue!);
+ }
+ }
+}

MODIFY
WalletWasabi.Fluent/Styles/Styles.xaml
WalletWasabi.Fluent/Styles/Styles.xaml
<Setter Property="Margin" Value="0 0 0 10" />
</Style>
- <!--Label-->
+ <!--Check mark-->
<Style Selector=":is(PathIcon).checkMark">
<Setter Property="Foreground" Value="{StaticResource SystemControlBackgroundAccentBrush}" />
- <Setter Property="Width" Value="12" />
- <Setter Property="Height" Value="12" />
+ <Setter Property="Width" Value="15" />
+ <Setter Property="Height" Value="15" />
<Setter Property="Data" Value="{StaticResource checkmark_filled}" />
</Style>

POC checkmark visibility