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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von m.grauber
Thema: [erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters
Am im Forum: GUI: WPF und XAML

Hallo Talla,

danke nochmals! Ja, jetzt habe ich es als Objekt übergeben und es klappt jetzt. Ich dachte, das könnte ich sparen. Aber es wird ja ohnehin mit Referenzen gearbeitet, weshalb das Programm sich dadurch nicht weiter im Speicher aufbläht.

Gruß!

Thema: [erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters
Am im Forum: GUI: WPF und XAML

Hallo,

über Reflection komme ich auf MyClass. Nur wie komme ich an den Member "Y"?


var MyObject = (parentWindow.GetType().GetMember("MyClass")[0]);

liefert mir ein MyClass-Objekt. Wie kann ich jedoch auf den Class-Member "Y" zugreifen, der sich in MyClass befindet?

Gibt es da draußen einen Reflection Profi der das weiß?

Vielen Dank!

Grüße

Thema: [erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters
Am im Forum: GUI: WPF und XAML

Hallo Talla,

wiedereinmal vielen Dank für Deinen Beistand! =)

Zitat
Mach im UserControl ein Property welches vom Parent aus gesetzt wird.

-> Das geht leider auch nicht. Das Usercontrol besitzt z. B. Buttons, die beim Klick Code ausführen. Daher kann ich diesen Code nicht so einfach vom Parent aus aufrufen.

Weiterhin können auch mehrere Usercontrols auf einer Form (und auf mehreren Forms) platziert werden. (Genau so wie z. B. ein normales WPF-Control)

Ich kann auch niemals alle jemals benötigten Member des Parent Forms immer an die Usercontrols übermitteln (das wäre viel zu viel Datensalat)

Praktisch habe ich nur folgendes Problem:


Wie kann ich ein casting in den Typ veranlassen, der dem Parent Window entspricht und dabei den Typ nicht explizit angeben, sondern dynamisch ermitteln


(parentWindow).FindName("MyClass"); // geht leider auch nicht

Noch irgendwelche Ideen?

Danke!

Thema: [erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters
Am im Forum: GUI: WPF und XAML

Hallo Ibm1305,

Danke, Geht aber leider nicht, da es auch mit mehreren Fensterinstanzen laufen muss.

Noch eine Idee?

Grüße!

Thema: [erledigt] WPF - Zugriff von Usercontrol auf Klasse des Parent Fensters
Am im Forum: GUI: WPF und XAML

Hallo,

in einigen meiner WPF-Fenster wird eine "public class MyClass" erstellt (direkt im Codebehind der Klasse). MyClass besitzt einen Member "Y" (int).

In einem selbst erstellten WPF Usercontrol möchte ich auf diese Klasse zugreifen.


Type windowType = Window.GetWindow(Parent).GetType();
((windowType)Window.GetWindow(Parent)).MyClass.Y=1;

Leider klappt das nicht. 1. erkennt C# nicht "windowType" als echter Typ an und 2. wird MyClass nicht erkannt.

Das casting nach ((Window)Window.GetWindow(Parent))... würde mir nichts bringen, da im Standard Window keine Klasse MyClass existiert.

Wie kann ich auf MyClass.Y sonst zugreifen? (verzweifelt)

Vielen Dank!

Thema: [erledigt] Entity Framework und Leerzeichen
Am im Forum: Datentechnologien

Hallo Xynratron,

auch Dir danke für den Tipp!

Wenn ich in der Datenbank Änderungen machen dürfte, wäre das für mich auch noch ein interessanter Weg! - Optional könnte ich auch unter C# mit Views arbeiten, jedoch möchte ich lieber beim Entity Framework bleiben.

Grüße

Thema: [erledigt] WPF - Usercontrol feuert auf Pageframe permanent das Loaded
Am im Forum: GUI: WPF und XAML

Hallo xxxprod und talla,

Danke für Eure Hilfe!

KeepAlive habe ich versucht und in verschiedenen Szenarien eingesetzt (teils mit JournalEntry). TabControl, die jeweilige Page und im Control. Damit funktioniert es scheinbar nicht.

Baut man in der jeweiligen Page eine <Page> mit KeepAlive ein, gibt es beim Wechseln eine Fehlermeldung:

Zitat
Für die Page sind nur "Window" oder "Frame" als übergeordnete Elemente zulässig.

Ich führe den Code nun im Loaded nur einmal aus und ignoriere weitere Aufrufe. Der Loaded ist für mich zwingend, da erst da das Binding steht.

Vielen Dank nochmals!

Grüße

Thema: [erledigt] WPF - Usercontrol feuert auf Pageframe permanent das Loaded
Am im Forum: GUI: WPF und XAML

Hallo,

bei der Erstellung eines WPF-Usercontrols bin ich bislang davon ausgegangen, dass dessen Loaded-Methode nur einmal nach dem Laden der Form gefeuert wird.

Dies ist aber nicht so, wenn sich das Usercontrol auf einem Pageframe befindet. Dann wird auch bei jedem Wechsel auf die zugehörige Page Loaded gefeuert!

Gibt es einen empfohlenen Weg, um diesen Fehler?! zu umgehen, außer das man mit einem Boolwert arbeitet?

Danke!

Thema: [erledigt] WPF-Textbox: TextChanged wird leider auch beim Binding ausgelöst
Am im Forum: GUI: WPF und XAML

Hallo Wpffan,

Danke für den Tipp!

Darauf bin ich nicht gekommen. Das klappt!

Vielen Dank!

Thema: LINQtoSQL: Feldnamen aus String
Am im Forum: Datentechnologien

Hallo,

vielen Dank für Deinen "Linq-Link" =)

Da gibt es scheinbar wieder einige verschiedene Ansätze. Ich werde mir das gleich einmal ansehen.

Grüße

Thema: [erledigt] Entity Framework und Leerzeichen
Am im Forum: Datentechnologien

Hallo FZelle,

vielen Dank!

Die Datenbank ist bereits älter (obwohl es nvarchar(x) bereits ab 2000er SQL-Server gab), stammt nicht von mir und es soll vorerst nur eine neue Oberfläche entwickelt werden. Derzeit darf ich die Felddefinitionen leider nicht anfassen.

Aber dann weiß ich jetzt, dass es keine derartige Einstellung gibt und werde wohl oder übel die String-Felder immer einzeln mit Trim() auslesen.

Danke nochmals und Grüße!

Thema: LINQtoSQL: Feldnamen aus String
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008R2>

Hallo,

in einer Linq to SQL Abfrage möchte ich die Felder nicht direkt angeben, sondern aus einem String verwenden. Leider gibt mir die Linq-Abfrage nicht die Inhalte, sondern den String zurück. Wie funktioniert das trotzdem?:


string sString = "tab.Vorname + ' ' +tab.Nachname";

...from tab in ent.kunden where ... select sString).FirstOrDefault;

Vielen Dank

Grüße!

Thema: [erledigt] Entity Framework und Leerzeichen
Am im Forum: Datentechnologien

Hallo witte,

Danke für Deine schnelle Hilfe!

Nein, leider nicht änderbar, da diese SQL-Tabellen nicht von mir stammen und nicht "angefasst" werden dürfen.

Evtl. gibts ja eine Einstellung wie "TrimTextOnRead=true" im EF.

Danke!

Thema: [erledigt] Entity Framework und Leerzeichen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008R2>

Hallo,

per Entity Framework lese ich meine Daten vom SQL-Server und stelle sie dann in einer WPF-Textbox dar.

Handelt es sich um Textfelder, werden die nachfolgenden und unnötigen Leerzeichen vom Sql-Server an meine Klasse und dann an die Textbox übertragen und beim Eintippen weiterer Zeichen in die WPF-Textbox blockiert die Box die Eingabe, da alles mit nachfolgenden Leerzeichen aufgefüllt ist.

Kann man im Entity Framework eine Einstellung machen, dass alle aus der Datenbank gelesenen Texte (außen) getrimmt werden? (z. B. TrimTextOnRead=true) (Ich möchte in meinen Linq-Abfragen nicht alle Felder einzeln abfragen und dann einzeln alle Textfelder mit Trim() modifizieren.)

Eine Änderung des getter/setter der Klasse kommt nicht in Frage, da es sich um die vom Framework definierten Klassen handelt.

Durch die Einstellmöglichkeit im Framework sollen a) nicht so viele unnötigen Daten übertragen werden und b) meine Textbox ohne Probleme funktionieren. Ein Abfagen der Leerzeichen in der Textbox wäre nur die zweitbeste Lösung.

Danke!

Thema: [erledigt] WPF - Zugriff auf "base" aus static Methode eines eigenen Controls
Am im Forum: GUI: WPF und XAML

Hallo Talla,

greife nun nicht mehr über base zu, sondern übergebe das Objekt gleich mit und arbeite damit weiter.

Nun funktioniert glücklicherweise auch das!

Nochmals Tausend Dank und ein schönes Wochenende!

Thema: [erledigt] WPF - Zugriff auf "base" aus static Methode eines eigenen Controls
Am im Forum: GUI: WPF und XAML

Hallo Talla,

zufrüh gefreut. Der Aufruf funktioniert einwandfrei. Jedoch bekommt scheinbar "base" in "MyMethode" eine andere Bedeutung und liefert immer null.

Rufe ich MyMethode hingegen im Loaded meines Usercontrols auf, funktioniert "base".

Was hat es damit auf sich?

Vielen Dank!

Thema: [erledigt] WPF - Zugriff auf "base" aus static Methode eines eigenen Controls
Am im Forum: GUI: WPF und XAML

Hallo Talla,

entschuldige! Ich hatte wirklich Tomaten auf den Augen: 8).

Manchmal sieht man den Wald vor Bäumen nicht.

Danke nochmals! Funktioniert nun

Grüße

Thema: [erledigt] WPF - Zugriff auf "base" aus static Methode eines eigenen Controls
Am im Forum: GUI: WPF und XAML

Hallo Talla,

ja Du hast eine gute Idee und Recht, das Objekt habe ich.

Ich könnte über Reflection die Methode ermitteln:


var y = obj.GetType().GetMethod("MyMethode");

Das klappt auch. Nur wie rufe ich diese auf? Zumal diese Methode hat einen Parameter. Am schönsten wäre natürlich so etwas (geht aber leider nicht) X(:


int i = 1;
y.Execute(i);

Danke!

Thema: [erledigt] WPF - Zugriff auf "base" aus static Methode eines eigenen Controls
Am im Forum: GUI: WPF und XAML

Hallo,

in einem WPF-Control existiert eine


public static readonly DependencyProperty myDP ...

diese ruft beim zuweisen eines Werts folgende Methode auf


public static void OnmyDPChanged(DependencyObject MyObj, DependencyPropertyChangedEventArgs args)

Weiterhin gibt es eine


public void MyMethode

Wie kann man von der static Methode OnmyDPChanged die public Methode MyMethode aufrufen? Ich weiß, das ist ohne Umwege nicht möglich.

Oder kann man eine WPF-DependencyProperty erstellen, die nicht statisch ist?

Danke!

Thema: WPF - TextBox oder Combobox SelectionChanged im XAML oder Loaded
Am im Forum: GUI: WPF und XAML

Hallo michlG,

danke auch für Deine Lösung

Auf eine solche Idee bin ich noch überhaupt nicht gekommen. Das ist scheinbar auch der Mehrschicht-Ansatz.

Das klingt auch sehr interessant und das werde ich mir ansehen!

Grüße

Thema: WPF - TextBox oder Combobox SelectionChanged im XAML oder Loaded
Am im Forum: GUI: WPF und XAML

Hallo xxxprod,

Danke für Deine Meinung.

Bei mir löst das SelectionChanged wegen dem Datenbinding beim Öffnen 1x aus.

Mal sehen, was die Anderen sagen.

Grüße

Thema: WPF - TextBox oder Combobox SelectionChanged im XAML oder Loaded
Am im Forum: GUI: WPF und XAML

Hallo,

bei der WPF Combobox gibt es ein SelectionChanged.

Wenn das bereits im XAML-Code angebunden wird, feuert es auch beim Öffnen der Form, was ja eigentlich vermieden werden sollte.

Wenn man es mit += im Code-Behind (Loaded) anbindet, funktioniert es wie gewünscht.


Heißt das, es ist

a) ein besserer Stil es mit += im Code-Behind anzubinden und
b) macht ihr es bei allen anderen Controls (auch Textbox etc.) immer mit +=


Danke

Thema: [erledigt] Entity Framework und SQL-Server: Primary Key ändern - Denkanstoß benötigt
Am im Forum: Datentechnologien

Hallo Abt,

Zitat
SQL Server 2008 R2 arbeitet mit XML-Files je Tabelle.

-> Das der Server intern mit xml-Files arbeitet kann ich fast nicht glauben. Dann müsste er ja gerade bei größeren Tabellen kreuzlahm werden.

Die Seite habe ich mir angesehen. Danke für den Link. Jedoch habe ich mich dafür entschieden, besser nicht so sehr zu tricksen. Workarounds könnten funktionieren, jedoch könnte man in späteren .NET Versionen böse Überraschungen erleben. Das will ich mir ersparen.

Da Khalid und auch Du nicht an ein derartiges Performance Problem glauben, bestärkt es mich, nun die Daten ordentlich zu löschen und neu zu erstellen. Ich kann das ja testen. Falls das später ein Performance- oder Platzproblem verursachen sollte, werde ich es später Umstellen.

Vielen Dank Euch beiden!

Grüße

Thema: [erledigt] Entity Framework und SQL-Server: Primary Key ändern - Denkanstoß benötigt
Am im Forum: Datentechnologien

Hallo Abt,

danke auch für Deine Hilfe!

Zitat
Eine ID/GUID ist ja aus Design sicht eigentlich vor allem dazu da, um Relationen einfacher zu beschreiben ( einmaliger Key, Eindeutigkeit etc etc.. ).
Wieso willst Du die ID also überschreiben?

-> Ja, das ist mir klar. Die ID muss ich ändern, da die Datensätze, die aus der Tabelle herauswandern, diese ID bereits haben und damit eine Eindeutige zuweisung gegeben ist. Die neuen Einträge sollen ja nur den physikalischen Platz der alten Einträge bekommen, damit sich die Tabelle nicht zu sehr und schnell aufbläst. Dazu muss ich die ID und die anderen Feldinhalte durch andere Werte ersetzen.
Zitat
Bei mir ist es ebenfalls möglich ein Eintrag mit allen Relationen komplett zu ändern (quasi wie ein Ersetzen) - bis auf die ID und das Insert-Datum.

-> Ja und das mit der ID ist genau mein Problem. Alle Werte können geändert werden, aber sobald die ID geändert wird, gibts einen Fehler.

Wenn ich die ID per T-SQL-Befehl ändere, geht es ja auch problemlos. Nur ich möchte mir das sparen und gleich mit SaveChanges() ändern.

Langsam vermute ich, dass EF tatsächlich die ID aus meiner Klasse für den Updatebefehl verwendet und daher nicht änderbar machen darf. Ich hatte bisher angenommen, dass für den Key noch ein anderer Wert im "Hintergrund der Klasse" gespeichert ist. Weiß da jemand genaueres?


Danke

Thema: [erledigt] Entity Framework und SQL-Server: Primary Key ändern - Denkanstoß benötigt
Am im Forum: Datentechnologien

Hallo Khalid,

danke für die schnelle Hilfe!

Du meinst also, dass mein Ansatz überhaupt nicht effizienter ist? Das wäre mir natürlich das liebste, da am Einfachsten. Jedoch verstehe ich es noch nicht ganz:

Die Tabelle besitzt ja einen Anfang, der an einer fixen Position auf dem Datenträger liegt. Alle angefügten Daten werden erst einmal (wenn Platz ist) dahinter geschrieben (wenn dort bereits etwas steht, dann an eine andere Stelle der Festplatte - Fragmentierung)

Wenn z. B. der 2. und der 3. Datensatz gelöscht werden und am Ende der Tabelle werden 2 Datensätze angefügt, werden diese doch nicht an der 2. und der 3. Stelle wieder eingefügt? (der Primary Key ist doch CLUSTERED) - Oder heißt dies, dass die wirklichen Daten schon an der 2. und der 3. Position wieder eingefügt werden, aber der zur Tabelle gehörige Index am Ende fortgeführt wird?

Abhängig davon kann das ja auch nochmals variieren, weil evtl. die Tabelle selbst nochmals größer ist, als der Platz, den sie benötigt.

D. h.

10000 Datensätze einfügen > 10000 Datensätze löschen > 10000 Datensätze erneut einfügen > usw. benötigt gleichviel Platz wie

10000 Datensätze einfügen > 10000 Datensätze überschreiben > usw.
?

Vielen Dank

Thema: [erledigt] Entity Framework und SQL-Server: Primary Key ändern - Denkanstoß benötigt
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL-Server 2000-2008R2>

Hallo,

in einer Tabelle werden sehr viele Einträge erstellt und nach ca. 1 Tag wieder verworfen. Damit sich die Datenbank nicht zu sehr und schnell aufbläht, würde ich die alten Einträge beim "Austragen" markieren statt zu löschen. Später sollen diese für neue Einträge wiederverwendet werden.

Um eine Eindeutigkeit zu erzielen, müssen den neuen Einträgen auch neue ID´s gegeben werden. Nun habe ich aber das Problem, dass die ID der Primary Key ist und nicht geändert werden kann. Beim Ändern kommt verständlicherweise folgende Fehlermeldung:


  meinetabelle.id=100;  // Hier bereits Fehler
  e.SaveChanges()
Zitat
Die Eigenschaft 'ID' ist Teil der Schlüsselinformationen des Objekts und kann nicht geändert werden.

Mir ist schon klar, dass ich den Schlüssel aus logischen Gründen so nicht ändern darf, doch wie kann ich dieses Problem umschiffen, ohne in einer weiteren Spalte eine weitere 'ID2' nutzen zu müssen?

Wenn irgendwie möglich würde ich gerne weiter mit SaveChanges() arbeiten, um nicht den gesamten Code umwerfen zu müssen.

Vielen Dank!

Thema: WPF: Transparenz im Fenster und trotzdem normale Border anzeigen
Am im Forum: GUI: WPF und XAML

Hallo,

es gibt also tatsächlich keine Möglichkeit, im WPF-Fenster Bereiche transparent zu machen, aber trotzdem den normalen Fenstertitel mit den Buttons minimieren, maximieren, schließen zu erhalten und die Border sizable zu machen? (Ohne das man das alles nachbaut!!?)

WindowStyle sollte also trotz AllowsTransparency unbedingt irgendwie auf "SingleBorderWindow" geändert werden können.

Hat niemand mehr eine Idee?

Thema: WPF: Transparenz im Fenster und trotzdem normale Border anzeigen
Am im Forum: GUI: WPF und XAML

Hallo JAck30lena,

wenn ich "AllowTransparency" auf true setze, verschwindet aber (Rahmen, Min/Max/Closebuttons etc.) das wollte ich aber wie gesagt vermeiden.

Also d.h. es geht nicht?

Thema: WPF: Transparenz im Fenster und trotzdem normale Border anzeigen
Am im Forum: GUI: WPF und XAML

Hallo JAck30lena,

danke für Die Hilfe! Das mit der Transparenz der Zelle und des Grids hatte ich wie folgt versucht:

- Im Window befindet sich ein Grid dessen Background auf Transparent gesetzt wird
- Im Grid wird in der betroffenen Stelle z. B. ein Stackpanel eingebaut, das auch auf Transparent gesetzt wird.

Nur wie wird der Background des Windows an dieser Stelle transparent gemacht? Das Grid ist doch das "oberste" Element des Windows und lässt weitere Objekte nicht zu?

Zitat
musst also das Window an dieser Stelle ebenfalls Transparent machen (nur an dieser Stelle... das geht)

--> Die einzige Lösung, die ich kenne, ist das gesamte Window transparent zu machen, aber das möchte ich ja vermeiden.

Thema: WPF: Transparenz im Fenster und trotzdem normale Border anzeigen
Am im Forum: GUI: WPF und XAML

Hallo,

ein WPF-Fenster soll ganz normal angezeigt werden (Rahmen, Min/Max/Closebuttons etc.) Ich möchte aber in einer Gridzelle trotzdem einen teiltransparenten Bereich "ausstanzen" (Opacity 0.5). Es reicht mir, wenn der Hintergrund nur dargestellt wird und man beim anklicken in der aktuellen Form bleibt.

Scheinbar ist das nur möglich, wenn die gesamte Form transparent gemacht wird. Nur ich möchte mir die Nachbildung des Rahmens mit den Button etc. sparen und die Standardrahmen mit Titel anzeigen. Zudem kann man den Rahmen ohnehin nicht richtig nachbilden, da der ja unter jeder Windows-Version anders aussieht.

Gibt es da ein Kniff?

Grüße