Databound Placeholder text
No edit summary
No edit summary
Line 1: Line 1:
Placeholder text is text shown as a hint to the user while the control is empty. As soon as the user enters a value, the placeholder text is not shown.
Placeholder text is the text shown as a hint to the User while the control is empty. As soon as the User enters a value, the placeholder text is not shown.
[[File:Input control with placeholder.png|none|thumb]]
[[File:Input control with placeholder.png|none|thumb]]


The old way was a [[TaggedValues|taggedvalue]] "Placeholder" along with the desired text to show "Enter a search string..." - this will be deprecated.
The old way was a [[TaggedValues|taggedvalue]] "Placeholder" along with the desired text to show "Enter a search string..." - this is deprecated.


The new way is to name an additional column with postfix _Placeholder in its name. The result of the expression will be used as a placeholder text.
The new way is to name an additional column with postfix _Placeholder in its name. The result of the expression will be used as a placeholder text.


In Turnkey, this has been available since early 2022.
This has been available in Turnkey since early 2022.


In WPF, you will need to add code, since the out-of-the-box controls of WPF do not support placeholder texts.
In WPF, you need to add code, since the out-of-the-box controls of WPF do not support placeholder texts.


If you use the excellent MaterialDesign ([http://materialdesigninxaml.net/ MaterialDesignThemes by James Willock)] package, this code will get the effect:
If you use the excellent MaterialDesign ([http://materialdesigninxaml.net/ MaterialDesignThemes by James Willock)] package, this code will get the effect:

Revision as of 08:33, 15 June 2023

Placeholder text is the text shown as a hint to the User while the control is empty. As soon as the User enters a value, the placeholder text is not shown.

Input control with placeholder.png

The old way was a taggedvalue "Placeholder" along with the desired text to show "Enter a search string..." - this is deprecated.

The new way is to name an additional column with postfix _Placeholder in its name. The result of the expression will be used as a placeholder text.

This has been available in Turnkey since early 2022.

In WPF, you need to add code, since the out-of-the-box controls of WPF do not support placeholder texts.

If you use the excellent MaterialDesign (MaterialDesignThemes by James Willock) package, this code will get the effect:

      _wecpof = new WECPOFTabBased();
      ...
      _wecpof.OnAddWindow += (s, e) =>
      {
        e.Win.ViewModelUC.OnViewModelColumnPlacementDone += (s2, e2) =>
        {
          if (e2.Ctrl is System.Windows.Controls.TextBox || e2.Ctrl is System.Windows.Controls.ComboBox || e2.Ctrl is System.Windows.Controls.DatePicker)
          {
            var val = e2.Vcol.TaggedValueLocalAndModelInfo("Placeholder");
            if (!string.IsNullOrEmpty(val))
              MaterialDesignThemes.Wpf.HintAssist.SetHint(e2.Ctrl, val);
            var dataForPlaceholder = e2.Vcol.ViewModelClass.ColumnFromName(e2.Vcol.RuntimeName + "_Placeholder");
            if (dataForPlaceholder != null)
            {
              if (e2.Ctrl is FrameworkElement)
              {
                var b = new System.Windows.Data.Binding(dataForPlaceholder.RuntimeName) { Source = e2.Vcol.ViewModelClass.BindingSource, Mode = System.Windows.Data.BindingMode.OneWay /*, Converter = new Eco.Xaml.PassthroughDebugConverter() */ };
                (e2.Ctrl as FrameworkElement).SetBinding(MaterialDesignThemes.Wpf.HintAssist.HintProperty, b);
              }
            }
          }
        };
This page was edited 97 days ago on 02/10/2024. What links here