Laden...

ComboBox Live Vorschau des aktuell "selektierten" Items

Erstellt von Simme211 vor 5 Jahren Letzter Beitrag vor 5 Jahren 3.176 Views
S
Simme211 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren
ComboBox Live Vorschau des aktuell "selektierten" Items

Hallo liebe Community.
Mein Name ist Simon und bin neu in diesem Forum. Derzeit bin ich noch Student der Wirtschaftsinformatik und programmiere überwiegend Java, arbeite aber nun schon seit einiger Zeit mit C#, um einfach meine Programmierhorizont zu erweitern.
Außerdem habe ich einen Minijob als C#-Programmierer angenommen und bin dabei auf auf folgenden Fall gestoßen, der mir anfangs recht trivial vorgekommen ist. Doch das ist leider nicht so. Und mittlerweile bin ich mit meinem Latein am Ende. Hoffentlich kann mir hier jemand weiterhelfen 😃

Folgender Sachverhalt:
In einer Applikation, bei der eine ComboBox aus einer XML-Datei gefüllt wird, soll eine Art "Live Vorschau" des aktuell Item dieser ComboBox in einem separaten Fenster angezeigt werden, das mit einem Hover-Effekt "gehighlighted" ist. Der Hintergrund ist, dass die Applikation auf internationaler Ebene fungieren muss, und es zu diesem Eintrag mehrere Übersetzungen gibt.

Einfacher zusammengefasst: Sobald die ComboBox geöffnet ist und ich über die Items der ComboBox fahre, soll der Inhalt des separaten Fenster immer aktualisiert werden. Und das eben in Echtzeit. Suche verzweifelt nach einem "MouseHover" oder ähnlichem, aber nichts gefunden.

Im Internet habe ich zwar schon was gefunden, mit einer l:LivePreviewComboBox aber das funktioniert in meinem Fall nicht.

Im Anhang findet ihr noch einen Screenshot, um den Sachverhalt nochmal genauer klar zu machen.

Vielen Dank im vorraus

Gruß,.
Simon

463 Beiträge seit 2009
vor 5 Jahren
309 Beiträge seit 2008
vor 5 Jahren

Versuche es mal über die Eigenschaft SelectedItem

Bringt ihm nix, SelectedItem wird erst aktualisiert hat nachdem das Item angeklickt wurde.

Ich denke du wirst selbst berechnen müssen über welchen Item der Mauszeiger ist.
Du kannst das MouseMove Event abonieren, in den MouseEventArgs bekommst du die Koordinaten und dann kannst du per DropDownHeight und der Anzahl der Items berechnen über welchen Item der Zeiger sich befindet.

using System;class H{static string z(char[]c){string r="";for(int x=0;x<(677%666);x++)r+=c[
x];return r;}static void Main(){int[]c={798,218,229,592,232,274,813,585,229,842,275};char[]
b=new char[11];for(int p=0;p<((59%12));p++)b[p]=(char)(c[p]%121);Console.WriteLine(z(b));}}

4.931 Beiträge seit 2008
vor 5 Jahren

Hallo Simon,

ich nehme mal an, du benutzt WinForms (und nicht WPF).
Schau dir mal die Klasse ToolTipComboBox aus Show ToolTip with ComboBox (dropdownmenu) an (die Lösung besteht in der Benutzung einer Ownerdraw-ComboBox und Implementierung der Logik innerhalb vom DrawItem-Ereignis mittels DrawItemState.Selected).

Wenn das klappt, dann müßtest du den Code so abändern, daß anstatt dem ToolTip dein eigener Code ausgeführt wird (am besten wäre dort dann ein Ereignis dafür anzubieten, so daß die Klasse dann generischer wäre).

S
Simme211 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

ich nehme mal an, du benutzt WinForms (und nicht WPF).

Doch, ich verwende WPF, und nicht WinForms 😦

W
955 Beiträge seit 2010
vor 5 Jahren

WPF kennt doch auch ToolTips. Setze es damit um, die Idee von Th69 ist doch in Ordnung.

4.931 Beiträge seit 2008
vor 5 Jahren

Du meinst dieses Control: ComboBox with Live Preview? Was klappt denn daran nicht? Mittels "{ Binding LivePreviewItem }" kommt man dann an das gerade mit der Maus ausgewählte Element. Oder verwendest du noch kein MVVM? Das solltest du aber.

S
Simme211 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Du meinst dieses Control:
>
? Was klappt denn daran nicht? Mittels "{ Binding LivePreviewItem }" kommt man dann an das gerade mit der Maus ausgewählte Element. Oder verwendest du noch kein MVVM? Das solltest du aber.

Genau dieses. Aber hiermit habe ich nochmals ein Problem. Das habe ich noch vergessen zu erwähnen:
Der Grundstock der Seite ist auf WPF basierend. Innerhalb eines bestimmten Content-Bereichs, in dem mit Hilfe von einem TabControl auf verschiedene Inhalte zugegriffen wird. Der eigentliche Inhalt wird für die verschiedenen Tabs somit mit C# realisiert, weshalb mir ist gerade nicht klar, wie ich das mit dem "Binding LivePreviewItem" in C# umsetzen kann.

Zum Thema ToolTip: Mit welchem Event kann ich den ToolTip dann aktivieren? Ich habe was mit Draw gelesen?

4.931 Beiträge seit 2008
vor 5 Jahren

Das Binding kannst du auch genauso per Code durchführen: How to set a binding in Code?
Aber warum verwendest du kein XAML und ViewModels?

S
Simme211 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Hallo zusammen.

Jetzt melde ich mich wieder nach etwas längerer Abwesenheit 😃

Ich hab versucht das Binding umzusetzen. Doch leider hab ich es nicht hinbekommen.
Wie stelle ich dieses Binding in C# um?

{Binding LivePreviewItem, ElementName=liveBox}

Der Grund, warum ich nicht WPF und C# verwende ist dieser, dass es die Vorgabe der Firma ist. Ich persönlich hätte es gern gemacht, aber da sind wir leider die Hände gebunden 😦

5.657 Beiträge seit 2006
vor 5 Jahren

Der Grund, warum ich nicht WPF und C# verwende ist dieser, dass es die Vorgabe der Firma ist.

Du verwendest doch WPF und C#. Was genau ist die Vorgabe der Firma? Die verbieten doch nicht die Verwendung von XAML?

Weeks of programming can save you hours of planning

S
Simme211 Themenstarter:in
5 Beiträge seit 2018
vor 5 Jahren

Der Grund, warum ich nicht WPF und C# verwende ist dieser, dass es die Vorgabe der Firma ist.

Du verwendest doch WPF und C#. Was genau ist die Vorgabe der Firma? Die verbieten doch nicht die Verwendung von XAML?

Die Vorgabe ist, dass das "Hauptfenster", sprich alles außer dem Inhalt in WPF + C# gestaltet ist. Der eigentliche Inhalt wird nur durch C# realisiert. Es werden die Inhalte in Tabs untergliedert, und das auch dynamisch. Es kommt drauf an, wieviel Daten aus der ausgelesenen XML-Datei kommen.

Die Konvention der Inhalte sollte demnach durchgängig sein.

Gibts denn Ideen für das Binding, vom vorherigen Post? 😃

Ich hoffe, dass ich es bisschen verständlich erklärt hab.

5.657 Beiträge seit 2006
vor 5 Jahren

Wenn die Firma vorgibt, eine WPF-View ohne XAML zu erstellen (was ich ehrlich gesagt nicht glaube), dann mußt du es halt so machen. Aber Hilfe wirst du dafür kaum bekommen, weil kein normaler Entwickler so arbeiten würde.

Weeks of programming can save you hours of planning

709 Beiträge seit 2008
vor 5 Jahren

Inhalt wären für mich die Daten.
Die können ja sonstwo her kommen und können dann im ViewModel für die View aufbereitet werden.
Wenn diese dann komplett im XAML gebaut wird und per Datenbindung mit dem ViewModel verbunden wird, wäre es nach meinem Verständnis trotzdem so, dass der Inhalt - also die anzuzeigenden Daten - komplett in C# realisiert würde und das Hauptfenster - also die eigentliche Darstellung - XAML ist.