Hi.
Ich möchte eine (Datums-)ComboBox aufbauen.
<ComboBox Name="cbDatum">
Die ComboBoxItems sollen letztlich folgende Struktur haben:
<ComboBoxItem Content="3 1" RealDatum="3.1.2021" />
(Bitte nicht fragen warum oder irgendwelche Alternativen vorschlagen.)
Den Parameter Content kann ich einfach befüllen mit einer for-Schleife:
ObservableCollection<string> DatumListe = new ObservableCollection<string>();
for(...) DatumListe.Add(tag + " " + monat);
Und schließlich ins XML bringen:
comboxDatum.ItemsSource = DatumListe;
Wie kann ich aber nun den Parameter RealDatum dazu bekommen...?
Vielen Dank für Hilfe!
MarkusRies
Na irgendwo muss du das RealDatum ja definieren, ComboBoxItem hat es von Haus soweit ich weiß nicht 😁
Sowas macht man mit DisplayMemberPath
Fummel das am besten so nicht im Code Behind zusammen. Erstelle dir eine Klasse, welche dein Objekt enthält z.B. etwas wie:
public class DateSelectionEntry
{
private DateTime _date;
public DateTime Date
{
get { return _date; }
set { _date = value; }
}
public string DisplayText
{
get { return this._date.ToString("d M"); }
}
}
Das sauber per DataBinding angebunden (natürlich die Klasse auch ensprechend angepasst) ist deutlich besser als zu versuchen da über den CodeBehind was zusammen zu fummeln.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Und was spricht gegen einen DatePicker, der dir dann auch viel Arbeit abnimmt?
Soll hier per ComboBox dann das richige Datum ausgewählt werden?
Auch das kann man sinnvoller mit DatePicker lösen.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
.. und verwendet DateTimeOffset und nicht DateTime 🙂
[FAQ] DateTime vs. DateTimeOffset und der Umgang mit Zeiten in .NET
Und was spricht gegen einen DatePicker, der dir dann auch viel Arbeit abnimmt?
Solche Textboxen / Combos können durchaus gewünscht sind und haben ihre Berechtigung.
Ich pers. bin mit der Tastatur-Eingabe auch schneller als mit der Maus und nem Date Picker.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Solche Textboxen / Combos können durchaus gewünscht sind und haben ihre Berechtigung.
Ganz genau. Datepicker ist sehr unpraktisch und unschön (m.M.n.).
Ich möchte per Tastatur (nur Ziffern und Leerzeichentaste) rasch und einfach ein Datum auswählen.
Das geht auch wunderbar und sehr einfach, wenn ich die Daten direkt im XAML hinterlege, mit der erwähnten Struktur
<ComboBoxItem Content="3 1" RealDatum="3.1.2021" />
In einem extra Textfeld kann ich das RealDatum z.B. auslesen und mir anzeigen:
<TextBlock Text="{Binding ElementName=cbDatum, Path=SelectedItem.RealDatum}" />
Nun möchte ich aber das Ganze, um nicht 365 Zeilen im XAML zu haben, das im CodeBehind (über Tages-/Monatsschleifen) generieren.
Deswegen.
Das muss doch irgendwie möglich sein...
Gruß
MarkusRies
Machs wie inflames2k (mit DateTimeOffset 🙂 vorgeschlagen hat, das is nen sauberer Weg.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
Vielen Dank für die Tipps und Hinweise!!
Markus Ries