Databound Placeholder text
No edit summary
(Automatically adding template at the end of the page.)
 
(2 intermediate revisions by 2 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]]
[[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:
Line 37: Line 37:
</pre>
</pre>
[[Category:View Model]]
[[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