Databound Placeholder text
No edit summary
(Automatically adding template at the end of the page.)
 
(6 intermediate revisions by 3 users not shown)
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]]


The old way was a 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 does 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 (MaterialDesignThemes by James Willock) package this code will ge the effect:
If you use the excellent MaterialDesign ([http://materialdesigninxaml.net/ MaterialDesignThemes by James Willock)] package, this code will get the effect:


<pre>
<pre>
Line 35: Line 36:
         };
         };
</pre>
</pre>
[[Category:View Model]]
{{Edited|July|12|2024}}

Latest revision as of 15:29, 10 February 2024

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