Laden...

Image recourse aus Dictionary zuweisen

Erstellt von gabischatz vor 2 Jahren Letzter Beitrag vor 2 Jahren 419 Views
G
gabischatz Themenstarter:in
29 Beiträge seit 2022
vor 2 Jahren
Image recourse aus Dictionary zuweisen

Hallo ich versuch gerade den Bildern neue Recoursen aus Dictionary zuweisen.
Allerdings bekomme ich den Image Namen nicht zusammen gebaut.
Hat jemand vieleicht eine Idee?
Grüße


 var ImageName = Image.Name(img.Key);


<Image x:Name="imageLoadFile" />


            Dictionary<object, string> dic= new Dictionary<object, string>();
            dic.Add("imageLoadFile", "file"); //adding a key/value using the Add() method
            dic.Add("imageLoadFolder", "folder"); //adding a key/value using the Add() method
            dic.Add("contentimage3D", "leer3D"); //adding a key/value using the Add() method
            dic.Add("contentimagePDF", "leerpdf"); //adding a key/value using the Add() method
            dic.Add("contentImage", "leerFooprint"); //adding a key/value using the Add() method
            dic.Add("SMD", "smdPad"); //adding a key/value using the Add() method
            dic.Add("THT", "thtPad"); //adding a key/value using the Add() method
            dic.Add("imagePlusPin", ""); //adding a key/value using the Add() method
            dic.Add("imageMinusPin", "minusPin"); //adding a key/value using the Add() method
            dic.Add("imageSerch", "serch"); //adding a key/value using the Add() method
            await Task.Run(() =>
            {
                foreach (var img in dic)
                {
                    var ImageName = Image.Name(img.Key);
                    Dispatcher.Invoke(() =>
                    { ImageName.Source = new Uri(@"file:///" + baseDirectory + "/resources/" + img.Value, UriKind.RelativeOrAbsolute)});
                }
            });

16.842 Beiträge seit 2008
vor 2 Jahren

Das Zusammenbauen kannst Du einfach mit dem Debugger prüfen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Wir können das nich für Dich debuggen.
Dynamische Image Resourcen via XAML macht man in WPF eigentlich IIRC mit einem IValueConverter.

PS: Dein Task Run Konstrukt bringt hier gar nichts.
Der Task hier erzeugt übertrieben gesagt mehr Overhead als Dein foreach überhaupt braucht.

Uris kombiniert man übrigens in dem man dem Konstruktor eine Uri Referenz übergibt.

G
gabischatz Themenstarter:in
29 Beiträge seit 2022
vor 2 Jahren

Hallo Abt,
das ist keine Antwort auf meine Frage!
Wie man einen Debugger verwendet, das weiß ich noch.
Vielleicht sollte ich keinen Code posten, sondern nur eine Frage stellen.
Versuchen wir es noch ein mal:
Nehmen wir mal an, wir haben ein String Array, in dem die Namen von sämtlichen Steuerelemente stehen.
Jetzt möchte ich z. B. dem ersten Steuerelement eine Ressource zu weißen.
Mir ist klar, wie man es normal macht. ImageName.Source = der Rest ist unwichtig.
Wie baue ich aber aus dem String ImageName das Objekt, welches ich ansprechen will zusammen.

Grüße

4.942 Beiträge seit 2008
vor 2 Jahren

Also geht es dir gar nicht um die URI, sondern darum das Control mit dem passenden Namen zu finden? Dann benutze FindName, s.a. Find Controls by Name in WPF.

Trotzdem noch als Hinweis: Sind deine Bilder extern und haben diese wirklich keine Dateinamenerweiterung (z.B. ".jpg" oder ".png")?

PS: Es heißt "Ressource" (bzw. engl. "resource" - im Code hast du es ja richtig geschrieben 😉.

Edit: Und es wäre schön, wenn du auch im anderen Beitrag zum GridSplitter antworten würdest.

16.842 Beiträge seit 2008
vor 2 Jahren

das ist keine Antwort auf meine Frage!

Doch ist es, nur verstehst es offenbar nicht. Das ist nicht schlimm, pampig musst trotzdem nicht sein.
Dein Ansatz ist schon falsch - und genau das hab ich Dir erklärt.
Muss aber zugeben, dass Dein Beitrag alles andere als deutlich war, was eigentlich die Frage ist...

Du kannst auch den Ansatz beibehalten und sagen "mir egal, wie man es richtig macht - ich will das so machen wie ich denke".
Dann wissen wir Bescheid.

G
gabischatz Themenstarter:in
29 Beiträge seit 2022
vor 2 Jahren

Pampig musst du trotzdem nicht sein. Du hast recht! Das war auch nicht von mir nicht so gemeint.
Ich möchte mich auch noch mal bedanken. @Th69, das ist der Punkt, den ich gesucht habe.
Es funktioniert auch außerhalb von Task.
Leider weiß ich nicht, wie ich es innerhalb von Task anwenden kann.
Es ist so, dass ich noch am wieder einarbeiten in C# bin und ich und ich meist nicht weiß wie ich es beschreiben soll.
Das konkrete Projekt (KiCad Footprint Viewer) ist bis jetzt nur in meinen Kopf.
Es sind alles nur Übungen, um wieder ein Programm erstellen zu können.
Zuletzt hatte ich ein Win-Forms Projekt vor vielen Jahren.
Deshalb muss ich mich in viel Neues einarbeiten.
So auch das mit await und Task.
Meine Frage: Wie oder was muss ich machen, dass ich dem Objekt jetzt die Source zuweisen kann?

Grüße

4.942 Beiträge seit 2008
vor 2 Jahren

Stichwort: casten, s. z.B. [FAQ] Casten aber richtig: Boxing/Unboxing - () / is / as / Pattern Matching (ein Beispiel steht aber auch im meinem 2. geposteten Link).

Aber dein ganzes Konstrukt mit Task.Run ist unnötig (denn auch FindName ist ein UI-Zugriff und gehört innerhalb von Dispatcher.Invoke!).
Warum überhaupt ist diese Funktionalität außerhalb des UI-Threads?

16.842 Beiträge seit 2008
vor 2 Jahren

Wozu überhaupt der Task?
Wie gesagt, er bringt Dir hier gar nichts, wird falsch angewendet - oder wir können nicht erkennen, was es Dir hier helfen soll.

G
gabischatz Themenstarter:in
29 Beiträge seit 2022
vor 2 Jahren

Danke für eure Antwort, der Task dient nur der Übung, ich werde diesen Task an dieser Stelle nicht verwenden.