From b56afdf2695153dfa9720330c68d1ee4943646ea Mon Sep 17 00:00:00 2001 From: MeltyPlayer Date: Fri, 10 May 2024 15:13:41 -0500 Subject: [PATCH] Set up a WPF component for a text box with a placeholder. --- .../ui/wpf/common/TextBoxWithPlaceholder.xaml | 23 ++++++++++ .../wpf/common/TextBoxWithPlaceholder.xaml.cs | 43 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml create mode 100644 FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml.cs diff --git a/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml b/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml new file mode 100644 index 000000000..4879bbd91 --- /dev/null +++ b/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml @@ -0,0 +1,23 @@ + + + + + + + + + \ No newline at end of file diff --git a/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml.cs b/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml.cs new file mode 100644 index 000000000..4a6563ef0 --- /dev/null +++ b/FinModelUtility/UniversalAssetTool/UniversalAssetTool.Ui/src/ui/wpf/common/TextBoxWithPlaceholder.xaml.cs @@ -0,0 +1,43 @@ +using System.ComponentModel; +using System.Windows.Controls; +using System.Windows; + +namespace uni.src.ui.wpf.common { + /// + /// Interaction logic for WatermarkTextBox.xaml + /// + public partial class TextBoxWithPlaceholder : UserControl { + private readonly TextBoxWithPlaceholderViewModel viewModel_; + + public TextBoxWithPlaceholder(TextBoxWithPlaceholderViewModel viewModel) { + InitializeComponent(); + this.viewModel_ = viewModel; + } + + public string Placeholder { + get => this.viewModel_.Placeholder; + set => this.viewModel_.Placeholder = value; + } + + private void TextChanged_(object sender, TextChangedEventArgs args) + => this.placeholderLabel_.Visibility + = this.impl_.Text != "" + ? Visibility.Hidden + : Visibility.Visible; + } + + public class TextBoxWithPlaceholderViewModel : INotifyPropertyChanged { + private string placeholder_ = "Search..."; + public event PropertyChangedEventHandler? PropertyChanged; + + public string Placeholder { + get => this.placeholder_; + set { + this.placeholder_ = value; + this.PropertyChanged?.Invoke( + this, + new PropertyChangedEventArgs(nameof(Placeholder))); + } + } + } +} \ No newline at end of file