Laden...

ComboBox-Parameter

Erstellt von MarkusRies vor 2 Jahren Letzter Beitrag vor 2 Jahren 309 Views
M
MarkusRies Themenstarter:in
8 Beiträge seit 2021
vor 2 Jahren
ComboBox-Parameter

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

309 Beiträge seit 2020
vor 2 Jahren

Na irgendwo muss du das RealDatum ja definieren, ComboBoxItem hat es von Haus soweit ich weiß nicht 😁
Sowas macht man mit DisplayMemberPath

2.298 Beiträge seit 2010
vor 2 Jahren

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 |

T
2.219 Beiträge seit 2008
vor 2 Jahren

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.

16.807 Beiträge seit 2008
vor 2 Jahren

.. 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.

M
MarkusRies Themenstarter:in
8 Beiträge seit 2021
vor 2 Jahren

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

16.807 Beiträge seit 2008
vor 2 Jahren

Machs wie inflames2k (mit DateTimeOffset 🙂 vorgeschlagen hat, das is nen sauberer Weg.

M
MarkusRies Themenstarter:in
8 Beiträge seit 2021
vor 2 Jahren
Danke

Vielen Dank für die Tipps und Hinweise!!

Markus Ries