Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
TextBlocks oder andere Dinge über String/Variable ansprechen
Butzi74
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

TextBlocks oder andere Dinge über String/Variable ansprechen

beantworten | zitieren | melden

Hallo zusammen.

Ich kämpfe mal wieder, als blutiger Anfänger, mit etwas herum und fand bisher echt nichts im Internet was mir half. Vielleicht sehe ich das Ganze viel zu falsch und es steckt wirklich viel mehr Arbeit dahinter:-(

Ich habe eine Seite (Page) bei dem es mehrere TextBlöcke gibt. Diese enthalten jeweils eine Prozessbar sowie ein Image. Die TextBlöcke, sowie die Prozessbar und das Image, haben jeweils einen Namen (x:Name=""). Die Namen der TextBlöcke heissen z.B. "DesktopBlock", "DokumenteBlock", "DownloadsBlock" usw. Die Prozessbar heissen "DesktopPG", "DokumentePG", "DownloadsPG" usw. Genauso die Images "DesktopIMG", "DokumenteIMG" usw.

Dann habe ich mir eine Klasse erstellte, die sich "Tools" nennt. Dort habe ich alle Funktionen wie z.b. Kopieren von Ordner usw. reingehauen. Die Kopierfunktion rufe ich dann z:b. über "Tools.Kopier(Quelle, Ziel);" auf. Geht alles.

Nun möchte ich eine weitere Funktion reinpacken, mit dem ich jeweils die Blöcke sowie Prozessbar oder auch Image ein und ausblenden kann.
Dies möchte ich durch z.b. "Tools.Info(Ordner,Zustand);" einblenden oder ausblenden. Sprich, gebe ich den Wert "Desktop" als ORDNER an, wird dieser als String weitergegeben und soll dann der TextBlock "DesktopBlock" angesprochen werden und eingeblendet werden. Mit ON oder OFF spreche ich über den String "Zustand" (On oder Off) dann die Prozessbar "DesktopPG" und "DesktopING" jeweils an.
Die ON oder OFF würde ich mit je einer IF Abfrage dann lösen.

Einen TextBlock blende ich ja mit "TextBlockname.Visibility = Visibility.Hidden;" aus. Korrekt?
Aber wie bekomme ich den String als TextBlocknamen z.b. hin? oder auch als Prozessbarnamen /Imagenamen?:-(
Zuerst erstelle ich neue Variablen wie "var Block = Ordner +"Block" oder "var PG = Ordner + "PG". Würde ja dann "DesktopBlock" ergeben.
Dann müsste es (mal bildlich gesehen) nur noch heissen "Block.Visibility = Visibility.Hidden". Aber VisualStudio kennt natürlich keinen TextBlock mit dem Namen BLOCK.

Hoffe ich konnte nun alles verständlich erklären was mein Problem ist oder wie ich es habe?:-)


PS: Ich verwende WPF und kein WindowsForm!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.839

beantworten | zitieren | melden

Da man in WPF mit Datenbindung arbeiten sollte, und mit nichts anderem, sind die Namen der Controls (x:Name) i.d.R. irrelevant.
Auch greift man von logischem Code nicht auf die Controls zu.

Deswegen gibt es den MVVM Pattern. Verwendet man diesen nicht, wird man von Workaround über Workaround stolpern.
[Artikel] MVVM und DataBinding

Über ein ViewModel und dessen Eigenschaften kannst Du dann auch dynamisch in XAML reagieren und Dinge ein/ausblenden.
Aber nicht umgekehrt.
private Nachricht | Beiträge des Benutzers
Butzi74
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Danke für die schnelle Antwort:-) Muss ich mir , wenn ich mehr Zeit und Ruhe habe, dann mal anschauen.

Aber wenn ich das nun auf den schnelle Blick richtig verstehe/sehe, dann verpasse ich z.b. dem TextBlock keinen festen Namen mit <TextBlock X:Name="DesktopBlock" ..> sondern mit <TextBlock IsEnabled="{Binding DesktopBlock}" /> und dann eben den entsprechenden C-Code wo ich zuvor (Beispiel Desktop) aus ORDNER+"Block" mir den String "DesktopBlock" zusammenbaue?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.839

beantworten | zitieren | melden

So ungefähr.
private Nachricht | Beiträge des Benutzers
Butzi74
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Also ich bekomme ich es immer noch nicht hin. Muss aber das Tool nun fertig bekommen und lasse es vorerst mal mit dem manuellem Ausblenden der jeweiligen TextBlöcke. Wenn ich wieder Luft habe, setze ich mich da erneut dran und versuche nochmal mein Glück. Wenn es klappt gibt es eine Version 2 quasi von meinem Tool:-)
private Nachricht | Beiträge des Benutzers