🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
Databound Placeholder text
(Automatically adding template at the end of the page.)
(Adding message template to the top of the page)
Line 1: Line 1:
{{message|Write the content here to display this box}}
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.
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]]

Revision as of 22:15, 16 June 2024

This page was created by Hans.karlsen on 2022-10-14. Last edited by Stephanie on 2025-02-24.

Write the content here to display this box

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);
              }
            }
          }
        };
MDriven Chat

How would you like to chat today?

Setting up your conversation…

This may take a few moments