J'utilise la dernière version forte> WPF Toolkit forte>, en particulier le On m'a dit de télécharger la source, d'ajouter une nouvelle propriété de dépendance et de recompiler à la DLL. C'est cool mais si la nouvelle version est libérée? p>
C'est pourquoi je voudrais modeler ce contrôle de cette manière que je pourrai remplacer cette chaîne par défaut. Aucune idée de comment faire ça? P>
merci! p> datePicker code>. Tout fonctionne bien, mais quand aucune valeur n'est fournie, le texte par défaut "Afficher le calendrier" apparaît dans la date de la datePickertext.
Je veux pouvoir changer cette valeur dans WPF. p>
4 Réponses :
OK. J'ai trouvé une solution par moi-même. De toute façon, Vous devez être conscient du fait strong>, qu'il existe une dépendancePropertoire appelée filigrane qui devrait être définie à la place de le texte. P> Le problème est qu'avec la dernière version de la SM (environ juin 2009), ils ont fait cette propriété Une autre possibilité consiste à éditer directement le code source à partir de la MS et SetWatermark () Code> Method + Ajoutez votre propre propriété de dépendance (myWatermark ou quelque chose) . Mais vous ne pouvez pas utiliser le
dll code> fourni. Ils ont dit qu'il viendra être fixé
C'est bon et tout, mais comment pouvons-nous intégrer cela dans un style existant qui cible DatePicker ???
Cela ne semble que travailler du temps de conception dans ma demande, dès que je lancerai, le texte revient à l'anglais
void _datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { if (_datePicker1.SelectedDate != null) return; FieldInfo fiTextBox = typeof(DatePicker) .GetField("_textBox", BindingFlags.Instance | BindingFlags.NonPublic); if (fiTextBox != null) { DatePickerTextBox dateTextBox = (DatePickerTextBox)fiTextBox.GetValue(_datePicker1); if (dateTextBox != null) { PropertyInfo piWatermark = dateTextBox.GetType() .GetProperty("Watermark", BindingFlags.Instance | BindingFlags.NonPublic); if (piWatermark != null) { piWatermark.SetValue(dateTextBox, "", null); } } } } you'll need to hook up the Load event as well with the same code.
Eh bien, je dois admettre que j'aime votre exemple avec réflexion .. de toute façon .. vous avez besoin d'un code derrière
Cela fonctionne bien, mais vous devrez également remplacer la méthode onRender en classe personnalisée.
Dans cette méthode si vous définissez le contenu en filigrane et non la propriété, il n'est pas nécessaire de remplacer l'événement SélectionnéDateChanged.
Le code complet est ici:
Vous pouvez également faire cela:
Ajoutez une zone de texte et un daysPicker à votre formulaire avec les paramètres suivants: p>
dans votre fenêtre.xaml: p>
private void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { textBox.Text = datePicker.SelectedDate.Value.ToString("dd.MM.yyyy"); }
J'ai trouvé une meilleure solution ici sur Matt Hamilton Blog . Works me forme excellent!