🚀 Welcome to MDriven Learn –  Don’t miss the latest Release Notes.
Databound Placeholder text

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.

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 the postfix _Placeholder in its name. The result of the expression will be used as 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 text.

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