Ergebnis 1 bis 3 von 3

C# DatePicker

  1. #1 Zitieren
    Waldläufer
    Registriert seit
    Sep 2008
    Beiträge
    134
    Hey ,

    ich bräuchte mal einen kleinen Rat.
    Ich nutze derzeit einen normalen Datepicekr in einer WPF Anwendung und möchte, dass diese den Text "Mitarbeiter aktiv" anzeigt, wenn kein Datum ausgewählt wurde. Standartmäßig wird in einem solchen Falle ja "Datum auswählen" angezeigt.
    Jemand eine Idee wie man das hinbekommen könnte?

    mfg
    El
    El Tocho ist offline

  2. #2 Zitieren
    Legende Avatar von jabu
    Registriert seit
    Jul 2011
    Beiträge
    7.383
    Zitat Zitat von El Tocho Beitrag anzeigen
    Hey ,

    ich bräuchte mal einen kleinen Rat.
    Ich nutze derzeit einen normalen Datepicekr in einer WPF Anwendung und möchte, dass diese den Text "Mitarbeiter aktiv" anzeigt, wenn kein Datum ausgewählt wurde. Standartmäßig wird in einem solchen Falle ja "Datum auswählen" angezeigt.
    Jemand eine Idee wie man das hinbekommen könnte?

    mfg
    El
    Vorweg: Normalerweise interessiere ich mich nicht für das .NET-Framework, bin also kein Experte auf dem Gebiet. Daher besser andere fragen, wo es spezifisch wird. Aber trotzdem mal ein Versuch, in der Hoffnung, dass es nützlich ist:

    Der Text scheint vorgegeben zu sein, Anpassung nicht vorgesehen. Das ist wieder so etwas, was mich in meiner Auffassung bestätigt, kein C#/.NET/CLI zu verwenden. Aber nun gut, will hier keinen Rant ablassen, obwohl ich von Anfang an davon überzeugt bin, dass .NET/CLI ein allgemein falscher Ansatz ist. Aber gut, bevor es philosophisch wird, lasse ich das.

    Mit Google müsstest du etwas finden, Keywords:
    wpf datepicker select a date change text

    So bin ich hier fündig geworden und bedanke mich hiermit brav beim Autor Matt Hamilton für die schlanke Lösung:
    http://matthamilton.net/datepicker-watermark

    Also habe ich es mal folgendermaßen ergänzt und zusammengefasst, um dir etwas lästiges Suchen zu ersparen:
    Code:
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Controls.Primitives;
    using System.Windows.Media;
    
    namespace WpfApplication1
    {
       /// <summary>
       /// Interaktionslogik für "App.xaml"
       /// </summary>
       public partial class App : Application
       {
          protected override void OnStartup(StartupEventArgs e)
          {
             base.OnStartup(e);
             EventManager.RegisterClassHandler(typeof(DatePicker), DatePicker.LoadedEvent,
                new RoutedEventHandler(DatePicker_Loaded));
          }
    
          void DatePicker_Loaded(object sender, RoutedEventArgs e)
          {
             var dp = sender as DatePicker;
             if (dp == null) return;
    
             var tb = GetChildOfType<DatePickerTextBox>(dp);
             if (tb == null) return;
    
             var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
             if (wm == null) return;
    
             wm.Content = "Mitarbeiter aktiv!";
          }
    
          public static T GetChildOfType<T>(DependencyObject depObj) where T : DependencyObject
          {
             if (depObj == null) return null;
    
             for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
             {
                var child = VisualTreeHelper.GetChild(depObj, i);
    
                var result = (child as T) ?? GetChildOfType<T>(child);
                if (result != null) return result;
             }
             return null;
          }
       }
    }
    Keine Ahnung, ob das deinen Anforderungen genügt, ob du noch etwas anpassen musst, ob es unter deinen Bedingungen hält usw. Ich habe das nur überflogen, scheint zu funktionieren, kann aber für nichts garantieren. Also viel Spaß! Vielleicht hat noch wer eine Idee, schaun wir mal.
    jabu ist offline

  3. #3 Zitieren
    Waldläufer
    Registriert seit
    Sep 2008
    Beiträge
    134
    Super, danke dir
    El Tocho ist offline

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •