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 dr4g0n76
Thema: Was hören .net Programmierer?
Am Gestern, im Forum: Smalltalk

Zitat von Abt
Jetzt wollen alle Dein Soundcloud Profile ;-)

Haha. Bring mich nicht in Verlegenheit. :-D
P.S.: Oder soll ich das jetzt etwa wirklich hier reinstellen? LOL

Thema: Was hören .net Programmierer?
Am im Forum: Smalltalk

Ich hatte damals geschrieben:


wenn ich alleine bin gerne techno, ansonsten alles, quer beet.

find so sachen wie enya auch genial oder evanescence

Was ich damals nicht erwähnt hatte:

Dass ich natürlich auch meine eigenen Kompositionen sehr gerne anhöre.
Das sind hauptsächlich:

- Filmmusik
- Reggaeton
- Pianostücke

aber auch

- Trance/Techno usw.

Thema: Datagridview als Tabelle in Word speichern
Am im Forum: Office-Technologien

Sehe ich genauso wie Fzelle und Abt.

Einziger Unterschied:

Falls Dir Open XML zu kompliziert werden sollte,
es kann alles, kann aber auch ziemlich komplex werden.

Dann kannst Du auch Closed XML (nicht Microsoft) verwenden.
Das ist IMHO viel einfacher zu benutzen, falls das, was Du oben beschreibst, alles ist was Du machen möchtest.

Thema: Updaten des Excel Sheet 1 mit Daten aus Excel Sheet 2 [gelöst]
Am im Forum: Office-Technologien

Inzwischen habe ich noch eine weitaus bessere (Roh-)Lösung gefunden:


namespace MergeExcels
{
    public class ClosedXmlExcelMerger
    {
        public void Merge(string fileNameSource, string fileNameDest, string workSheetName = "MasterTabelle", string languageToMergeFrom = "es-MX", bool returnNewMergedFile = true)
        {
            IXLWorkbook workBookSource = new XLWorkbook(fileNameSource);
            IXLWorkbook workBookDest = new XLWorkbook(fileNameDest);

            var worksheetSource = workBookSource.Worksheet(workSheetName);
            var worksheetDest = workBookDest.Worksheet(workSheetName);

            //find spanish column in source and dest
            IXLRow firstUsedRowSource = worksheetSource.FirstRowUsed();
            IXLRow firstUsedRowDest = worksheetDest.FirstRowUsed();

            int languageColumnNumberSource = XLHelper.GetColumnNumberFromAddress(firstUsedRowSource.GetLanguageCell(languageToMergeFrom).Address.ToString()); //subtract 1 to be able to use zero based index
            int languageColumnNumberDest = XLHelper.GetColumnNumberFromAddress(firstUsedRowDest.GetLanguageCell(languageToMergeFrom).Address.ToString());

            //Gets all the tokens from Dest
            IXLCells foundCellsContainingValidTokensInDest = worksheetDest.CellsUsed(x => Regex.Match(x.GetString(), Helpers.Helpers.ValidTokensPattern).Success); //IXLCells foundCellsContainingValue = worksheetSource.CellsUsed(x => x.GetString() == value.ToString());

            int cellProcessedIndex = 0;
            foreach (IXLCell cell in foundCellsContainingValidTokensInDest)
            {
                string tokenToFind = cell.GetString().Trim();
                IXLCells foundCorrespondingValidTokenInSource = worksheetSource.CellsUsed(x => x.GetString() == tokenToFind); //IXLCells foundCellsContainingValue = worksheetSource.CellsUsed(x => x.GetString() == value.ToString());

                IXLCell tokenCellInDest = cell;
                string tokenTextFromDest = tokenCellInDest.CellRight(languageColumnNumberDest - 1).GetString();
                if (tokenCellInDest == null)
                {
                    new Exception("This should not happen!");
                }

                //Get the cell to insert to
                IXLCell cellToInsertValueTo = foundCorrespondingValidTokenInSource.First().CellRight(languageColumnNumberSource - 1);
                cellToInsertValueTo.Value = tokenTextFromDest;

                cellProcessedIndex++;               
            }
        }
    }
}

Das hier reicht aus, um den gefundenen Token String (der sich in Helpers.Helpers.ValidTokensPattern befindet) als key zu benutzen für die Zeile und damit von der einen Datei,
die Texte die in der Language Spalte sind in die andere Datei zu übertragen.

Thema: Updaten des Excel Sheet 1 mit Daten aus Excel Sheet 2 [gelöst]
Am im Forum: Office-Technologien

Also:

Ich habe eine Lösung gefunden:

Mit ClosedXML geht das ganze sehr einfach.

Damit schrumpft das Alles auf etwas in dieser Art:


            XLWorkbook workBookSource = new XLWorkbook(fileNameSource);
            XLWorkbook workBookDest = new XLWorkbook(fileNameDest);

            var worksheetMastertable = workBookSource.Worksheet("Mastertabelle");

           //find spanish column
            foreach(IXLRow row in worksheetMastertable .RowsUsed())
            {
                string rowText = string.Empty;

                string token = "";
                string languageIndex = "es-MX";
                string tokenText = FindTextForToken(languageIndex, token);

                if (TokenExists(worksheetMastertable , token))
                {
                    AddTokenTo(workBookSource, token);
                }

                foreach (IXLCell cell in row.Cells())
                {
                    var value = cell.Value;
                    rowText += value+" | ";
                }
            }
         
        }

Die Methoden oben, die nicht im Code zu sehen sind, sind bisher leere Pseudomethoden,
die Objekte sind aber sehr leicht im Debugger zu brauchen.
Deswegen sollte das keinen Aufwand mehr brauchen.

Auf Wunsch kann ich auch das fertige Ergebnis später - mit den Methoden - hier posten.

P.S.: Zuerst hatte ich das Ganze mit OpenXML von Microsoft versucht. Es funktioniert zwar.
Ist aber ziemlich aufwändig das Ganze damit zu machen.
Auch wenn man Zugriff auf jedes Atom von Excel hat.

Hatte gemerkt, das braucht doch einiges an Aufwand und Lernaufwand.
Auch wenn ich in 2/3 Stunden was ansatzweise brauchbares hatte.

Thema: Updaten des Excel Sheet 1 mit Daten aus Excel Sheet 2 [gelöst]
Am im Forum: Office-Technologien

Hallo Th69.

Es ist das neue Format, also: .xlsx.
Ok, dann werde ich das iterativ bzw. mit einem kleinen Programm machen.
Danke für Deine Hinweise.

Zum P.S.:

Ja, das ist mir natürlich auch bekannt.
Hab auch das Problem gefunden. Im Texteditor war eingestellt: Leerzeichen in Tabs konvertieren.
LOL. Da kann ich natürlich lange suchen.

Denn genau Deinen Ansatz hatte ich ebenfalls verwendet.

Thema: Updaten des Excel Sheet 1 mit Daten aus Excel Sheet 2 [gelöst]
Am im Forum: Office-Technologien

Hallo zusammen.

Weiss jemand von euch zufällig, wie man 2 Excel Tabellen, wie unten beschrieben mergen kann?
Auf jeden Fall, diese Art, wie ich sie brauche habe ich bisher nicht sinnvoll in Google finden können.

Grund:

Wir haben hier verschiedene Sprachen mit Items in Excel Tabellen.

Es wurde aber eine falsche Excel-Datei (ältere Version) übergeben, bei der die Spalten nicht mehr übereinstimmen.

Es gilt also folgendes zum vorherigen Stand (Stand 1):

Token Name Deutsch Englisch Spanisch
T.Change Ändern Change
T.Help Hilfe Help
T.New Neu New

Und in einem weiteren Stand (Stand 2), Z.b. das:

Token Name Deutsch Englisch Spanisch
T.Change Ändern Change Cambiar
T.Help Hilfe Help Ayuday
T.Rot Rot Red Rojo

Ich muss also folgendes erreichen, dass Stand 1 und 2 so gemergt werden, dass ALLE tokens von vorhin enthalten sind am Ende:
Und dabei ist also die Token Name Spalte die wichtige. D.h. wenn ein neues Token gefunden wird in Stand 2, wird es in Stand 1 hinzugefügt.
Doppelte Tokens sollten nicht vorkommen, den Fall brauchen wir nicht berüchsichtigen.

Es reicht also z.B. wenn die Spalten auch so generiert werden würden, dass ich sie per Paste einfügen kann.
Anders ausgedrückt: Am Ende soll Stand 1 alle Tokens zusätzlich enthalten, die fehlen, aber in Stand 2 schon enthalten sind.

Weiss jemand, wie ich das erreiche? Mir ist es egal, ob ich dafür ein kleines Programm schreiben muss,
idealerweise in diesem Fall ohne Programmierung. Vielleicht geht das ja mit Excel ganz einfach?

Das wäre dann jedenfalls das gewünschte Ergebnis in Stand 1:

Token Name Deutsch Englisch Spanisch

T.Change ändern Change Cambiar
T.Help Hilfe Help Ayuda
T.New Neu New Nuevo
T.Rot Rot Red Rojo

P.S.: In der Vorschau im Editmodus wird die Formatierung bei mir richtig angezeigt der Tabellen.
Leider ist die Formatierung nicht richtig, wenn man sie im fertigen Beitrag anschaut, bisher weiss ich nicht, wie sich das ändern liesse, ohne einen Screenshot zu erstellen.

Thema: Code soll erst auf Devops eingecheckt werden, wenn er buildet.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

@Abt.

Wie ich ja gesagt hatte, ich hätte es auch anders vorgeschlagen. Da ich derselben Meinung war, dass das unsinnig ist.
Nur … ich bin leider nicht derjenige, der es bestimmt. Sondern jemand anders höher in der Hierarchie.

Ja, die Absicht ist erkennbar.
Nur bedauerlicherweise akzeptiert diese Person keine andere Lösung.

und ich sehe das auch als organisatorische Fehlleistung, Gängelung. Trägt einfach nicht zur Produktivität bei. Im Gegentil.

dr4g0n76

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Das ist tatsächlich so. Der Code ist … na ja. Bisher. Es wird gerade viel umgeändert.
Und vor allem auch das, dass es wie eine normale WPF-App funktioniert.

Auf jeden Fall in der neuesten Version gibt es das jetzt mehr oder weniger zumindest bis jetzt.

Deshalb habe ich mal angefangen, den Vorschlag von Dir auszuprobieren.
Danke nochmals dafür!

Ich werde auf jeden Fall versuchen, das Ganze zum Laufen zu bringen.
Und dann den Code hier ergänzen. Zuerst mal für den allgemeinen Fall.
Denn das Thema muss ich sowieso lösen. Bei uns brennt's halt gerade an vielen Ecken und Enden.
Hier gilt wirklich wieder mal, aufgeschoben ist nicht aufgehoben.

P.S: Ich hab also den Code übernommen und mal versucht erste Schritte zu machen.
Ich werde ein Update hier posten, sobald ich ein paar Schritte weitergekommen bin.

Thema: Code soll erst auf Devops eingecheckt werden, wenn er buildet.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Azure DevOps hat ja genügend Einstellungen, die man machen kann, um den Code Build zu testen, automatisch ausführen zu lassen, sich berichtigen zu lassen usw.

Thema:

Azure DevOps hat ja genügend Einstellungen, die man machen kann,
um den Code Build zu testen, automatisch ausführen zu lassen,
sich berichtigen zu lassen, usw.

Bei uns wird nach einer Möglichkeit gesucht, den Code gar nicht erst auf DevOps einchecken zu lassen,
bevor er nicht eindeutig kompiliert.

Kennt dafür jemand eine Möglichkeit?

Denn im Moment wüsste ich nicht, wie man das erreicht.

Gewollt ist quasi folgender Mechanismus:

1.) Es wird versucht, einzuchecken. Auf ein DevOps Repository.
2.) Dann soll DevOps (wie auch immer) den Build überprüfen.
3.) Und wenn der erfolgreich war, erst DANN das Ganze ins Repository übernehmen.

Ich wüsste nicht, dass DevOps das so von Haus aus kann.
Und wenn, dann fällt mir da nur was Ähnliches wie ein Buildvorgang ein, der aus 2 Pipelines besteht
oder eine Lösung mit einem lokalen Agenten, aber auch das ist nicht gewollt.

Meine Lösung dazu:

Ich hatte dann vorgeschlagen, dass jeder Entwickler das gleiche Tool nehmen kann,
dass das schon in der IDE so wäre.
Problem gelöst.
Nur … leider wird das nicht akzeptiert. Da das ja dann lokal wäre …

Ich entscheide bedauerlicherweise nicht selbst, welche Lösung wir favorisieren.
Kann darüber nicht bestimmen.

Wie würdet ihr das machen? Geht das überhaupt mit Azure DevOps Boardmitteln?

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Das auf jeden Fall. Nur... wass willst Du erwarten, bei einer Software die erstmal 100e von Exceptions erzeugt, bis sie wirklich hochfährt.

Ich hab mal versucht folgendes zu machen:

Es gibt eine Art try/catch-Block für die ganze Applikation. Mit diesem eigens vergewalteten Application-Object, dass die Entwickler selbst "verbrochen" haben. ;-)
Ich hab mal den try/catch-Block entfernt, weil zumindest in VS2019 manche Sachen nicht einfach so einsehbar waren, durch Warning-Suppressions and what not.
Selbst wenn Du den weg machst, das Ding ist so instabil, dass die Software dann nicht läuft.

Wie kann man so eine Qualität machen. Aber egal... (egal im Sinne von dann distanzier ich mich halt emotional komplett davon, was kann ich dafür. ;-))


try
{
   Application.StartMainProgram();
}
catch(Exception ex)
{
   Log(ex).Here();
}

und Du hast Recht. Ich hab das Application-Object auch noch nicht gefunden.
Das einzige wo ich bisher Application.Current gesehen hatte, war in einer Drag/Drop-Routine. Morgen hab ich endlich mal etwas mehr Luft, dann werde ich mir es genauer anschauen.

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Ich kann Dir zumindest einen Teil davon zeigen.

Es wurde durch


using <OWN NAMESPACE>;

namespace <OWN NAMESPACE>
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            var applicationManager = new ApplicationManager();

            applicationManager.Start("OFApplication","OFSplashScreen");
        }
    }
}

Ausgetauscht und die ApplicationManager-Klasse leitet weder von Application ab, noch macht sie sonst was WPF-trächtiges. Nada. Ist auch nicht von etwas anderem abgeleitet und hat auch kein Interface.

Sieht teilweise so aus:


 public class ApplicationManager
    {
        private string _splashScreenType = "Default";

        private Window _splashScreen;
        private string _applicationName;
        private ManualResetEvent _delay = new ManualResetEvent(false);
        private ManualResetEvent _splashSync = new ManualResetEvent(false);

        public ApplicationManager()
        {

        }

Und startet Threads über etwas das ein wenig so aussieht wie ein Factorypattern...

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Leider wird bei uns kein App Object benutzt, wie ich gerade gesehn hatte. Aber das lässt sich ja ändern, wenn ich das ganze benutze, um zu testen.
Ich werde es auf jeden Fall ausprobieren. War auch gerade am Suchen, wie man das mit dem BAML löst. Du warst schneller. :-)

Thema: Interface zur Laufzeit zu einer Klasse hinzufügen (Lösung)
Am im Forum: .NET-Komponenten und C#-Snippets

Siehe auch (als Ergänzung):

Lösung für: Anonymen Typ in ein Interface casten

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

@Palladin007

Wofür steht eigentlich die 007 bei Dir? Seriennummer Skateboard? James Bond? Geburtstag in spezieller Form? Deine Serien ID. ^^

Ich könnte, wenn ich hier teil vom Softwareteam wäre, bzw. nicht nur die Textcontrols. Denn das wäre genau, das was ich machen würde und den Vorschlag habe ich auch schon eingebracht.
Nur... leider bin ich hier "nur" im Test-Team. Deswegen werden meine Vorschläge hier auch nicht entgegengenommen. Und dann fragt sich halt das Software-Team, wie sie die ganzen abgeschnittenen Texte finden sollten.

Deswegen kam ich aus dem Testerkontext her auf die Idee: Ich könnte ja alle Controls durchgehen und dann schauen.
Leider ist die Softwarequalität so schlecht, dass selbst wenn ich mein eigenes Programm einhängen würde, das nicht garantiert ist, dass das funktioniert.

Denn die App wird quasi "vorsichtig hochgecrasht", sorry aber anders kann ich das bei der Softwarequalität nicht mehr bezeichnen.
Denn es entstehen erst mal ein paar hundert Exceptions, bis Host und Exe laufen. LOL.

Jetzt weiss auch, warum dieser IRRE Aufwand. Denn abgeschnittene Texte wird es immer wieder geben und ich will den Aufwand für mich automatisieren.
Hab keinen Bock, das immer wieder händisch durchzukontrollieren.

Jetzt kennst Du den Hintergrund. :-)

Hab mir eh neulich schon anhören dürfen: Du findest immer so komische Bugs.
Meine Antwort dazu:
1. Dazu wurde ich ja hierhergeholt.
2. Wenn Du so komische Sachen programmierst... Und ausser mir scheint sie ja keiner bisher zufinden...

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

@Palladin007

Klar, übrigens hab ich mir das mal genauer angeschaut, was Controls ermitteln angeht, lohnt es sich sowohl

SnoopWpf

und auch

Accessibility Insights

anzuschauen für WPF unter Windows 10 usw.
Denn das zeigt auch die ganzen Boxes mit Focus auf dem gehoverten Control an.
Hab gerade geschaut, man kann auch nachschauen, wie es das macht.

https://cloudblogs.microsoft.com/opensource/2019/03/12/microsoft-open-sources-accessibility-insights/

:-) Das sollte auf jeden Fall helfen sehr nahe an die Lösung zu kommen, die Controls zu ermitteln.

Mit dem Abschneiden, muss dann immer noch geschaut werden. :-)

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

@Thomas.at

Ja, das Problem ist, dass das Konzept bei der Übersetzung nicht richtig durchdacht wurde.
Und das mit den Ellipsen ist zwar eine gute Idee und wird teilweise so gemacht.

Warum ich das so vorgeschlagen hatte, die abgeschnitten Texte (truncated texts) so zu finden, durch Berechnung oder was auch immer es sonst noch für Möglichkeiten geben möge,
ist, dass eben in anderen Sprachen, wenn die Ellipsis benutzt wird (also die "…"-Funktion), dann wird in anderen Sprachen zu viel abgeschnitten.

Z. B. kann in Deutsch/Englisch Notalarm/Emergency Alarm geschrieben werden, nur wenn dann in Spanisch angezeigt wird Alarma de Emergencia
und man nur Alarma de … sieht, dann kann das zu Problemen führen. Normalerweise hätte ich gesagt: Dann vergrössert doch einfach die Controls.
Da die ganze Applikation aber nachher auf einem Panel läuft, mit 1366 x 720 als Auflösung, ist halt teilweise der Platz auf manchen Bildschirmen sehr beschränkt.

Leider scheint sich halt darüber keiner vorher Gedanken gemacht zu haben. Wie so oft…

Ausserdem dachte ich könnte das allgemein eine gute Funktion eines Testtools sein.

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Weiss eigentlich jemand, wie man das in der eigenen App machen würde?
Egal welche Control man anzeigt, die Text(e) auf dem Bildschirm anzeigt?

Damit könnte man vielleicht auch Rückschlüsse ziehen, wie man das von aussen mit Windows Automation ermittelt.

Thema: DataGrid mit selbst gefüllter DataTable anzeigen
Am im Forum: GUI: WPF und XAML

Das Problem ist zweigeteilt, sozusagen:

ich würde es gerne richtig machen. Deswegen werde ich es auch zu Hause für mich richtig benutzen. Da redet mir ja zum Glück keiner dazwischen.

Nur derjenige, der mir gerade vorgibt, was ich machen soll, der will das nicht.
Also soll er sich selbst darum kümmern. Ich mach nur den Proof of Concept.
Wenn es dann aber nachher nicht richtig funktioniert, dann ist er selbst schuld. Dann kümmere ich mich nicht mehr darum.

Das ist der Hintergrund.

Denn: ich sehe das genauso wie Du. Sonst hat man wieder Ärger hinterher. Whatever. Selbst schuld, wenn er das so will.

Es gibt nichts daran auszusetzen, an dem was Du nennst.
Im Gegenteil. Meinst Du ein eigenes MVVM Framework oder ein vorhandenes? Muss zugeben, so richtig tief in WPF bin ich nicht drin.
Natürlich nicht unwissend, aber längst noch nicht so, wie mit Windows Forms damals.

P.S.: Ich gebe Dir mal noch 2/3 Beispiele, warum das gerade in der Firma so läuft, damit Du den Hintergrund mehr verstehst,
Ich bin momentan dran eine Automatisierung zu erstellen auf Azure DevOps. Eigentlich.
Nur.. hier in dieser Firma sind so viele dringend, dass man dann dauernd eine neue Prio 1 bekommt. Soweit so gut.

Z.B. war eins der ersten Dinge, dass ich aufgedeckt habe:

1.) Die Firma benutzt SQL Express 2014. Weil das ja kostenlos geht. Laut denen. Hab das bisher noch nicht genauer überprüft.
Nur... was ich dann festgestellt hatte, dass die Datenbank beim Kunden zu 98% voll ist und jeden Moment überlaufen kann.

Hab darauf mehrmals hingewiesen. Nur, dieser Typ will das nicht. Er meinte, wir können uns noch 2 bis 3 Monate Zeit lassen.
LOL. Wenn die Datenbank Files aber alle 3 Tage bis zu 100 MB zunehmen…

SQL Express hat ja das 10 GB Limit.

Also bin ich irgendwann höher zu seinem Vorgesetzten (von – nennen wir ihn mal A). Weil er mich immer dementiert hat.
Sein Vorgesetzter C meinte sofort: klar. Datenbank retten ist wichtiger als alles andere. Wir können uns so was nicht leisten.
Gut. Und dieser vorgesetzte C meinte, ist gut. Brich alles ab. Mach eine Lösung dafür zumindest als Workaround.


2.) Mit den Übersetzungen für neue Sprachen ebenfalls der gleiche Mist.

3.) Und jetzt weisst auch, denke ich, warum ich da nur ein Provisorium mache. Das ist und bleibt dann seine Verantwortung.

Vor allem, wenn das noch lange so weitergeht, dann und meine Bugs weiter gelöscht werden oder als zu unwichtig deklariert werden
und deswegen gelöscht und der Kunde und sich sein Vorgesetzter fragt, warum die Probleme nach 2 Monaten immer noch nicht gelöst sind…
Dann habe ich da eh nicht mehr lange was verloren.

So, das musste ich mal loswerden.

Thema: DataGrid mit selbst gefüllter DataTable anzeigen
Am im Forum: GUI: WPF und XAML

Nope. Hast zwar recht. Nur für mich wird es keins bleiben. Nur hier in der Firma halt.
Für meine eigenen Anwendungen, werde ich das auch benutzen. Da aber garantiert nicht als Provisorium. :-D Da kann ich ja zum Glück selbst den Zeitaufwand und die Qualität bestimmen. :-D

Thema: DataGrid mit selbst gefüllter DataTable anzeigen
Am im Forum: GUI: WPF und XAML

Also das funktioniert soweit schonmal. Danke. :-)
Das werde ich bei nächster Gelegenheit einbinden. Und das mit dem Binding wie das geht ist auch klar.
Den Code kann man ja nachträglich noch verbessern. Da das Ganze ein Testtool wird, ist hier ausnahmsweise erst mal Geschwindigkeit wichtiger.

EDIT:
P.S.: Testtool im Sinne zum Ausprobieren, nicht um es als Tester zu verwenden. ;-)

Thema: DataGrid mit selbst gefüllter DataTable anzeigen
Am im Forum: GUI: WPF und XAML

Zitat von Palladin007
Warum weist Du die DataTable direkt zu? Dafür gibt’s DataBinding und WPF ohne MVVM macht keinen Spass.
Bei Tasks solltest Du NIEMALS (ausser Du weisst, was Du tust und hast einen guten Grund) direkt mit dem Resultat arbeiten.
Console.WriteLine? In WPF-Anwendungen gibt es keine Konsole. Wenn’s da einen Fehler gibt, fällt Dir der also nicht auf.
Die DataTable habe ich noch nie mit dem DataGrid zusammen genutzt, ich würde aber die DefaultView benutzen – ob eine Eigene ein Problem ist, weiß ich aber nicht.
Und ich würde auch keine DataTable nutzen, die unterstützt (meines Wissens nach) keine Live-Aktualisierung beim Binding und angepasste Columns stelle ich mir auch schwierig vor.

Erstmal danke für Deine Antwort @Palladin007.

Klar, die Console ergibt keinen Sinn. Das liegt daran, dass ich viel experimentiert habe. Das war zuerst eine Konsolenanwendung mittags noch. :-)
Dafür, um zuerst nur die Devops Items auszulesen.

Ich wollte eigentlich das Programm wegwerfen, wenn es funktioniert und einfach nur eine User Control daraus erstellen.

Und mir gings erst mal darum den Datatable anzuzeigen im Grid. Deswegen habe ich hier gar nichts bereinigt. Sondern nur probiert.
Ich habs auch schon mit Binding probiert gehabt. Das hatte halt auch nicht funktioniert.

Was ich teilweise auch noch ausprobiert hatte, war von hier:

https://www.dotnetspider.com/resources/34103-WPF-Binding-DataTable-WPF-Datagrid.aspx

Thema: DataGrid mit selbst gefüllter DataTable anzeigen
Am im Forum: GUI: WPF und XAML

Ich möchte mit dem untenstehenden Code einen selbstgefüllten DataTable an die ItemsSource eines Datagrid übergeben.
Die Columns sind AutoGenerated.

Wenn ich den DataTable im Debugger Visualizer anschaue, dann ist auch alles so gefüllt, wie es sein soll.
Nur nachher auf dem GUI ist alles leer. Nur die Spalten und die Zeilen wurden richtig generiert, nur, wie eben halt schon gesagt, ohne Inhalt.
Was mache ich falsch?

Das XAML zum DataGrid sieht so aus:


<DataGrid x:Name="wiqlDataGrid" AutoGenerateColumns="True" ColumnHeaderHeight="25" Margin="125,99,10,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

EDIT: Ich hätte gerne das im DebuggerVisualizer angezeigte Bild live auf dem Screen in der App (siehe angehängtes Bild aus dem DebuggerVisualizer)


            try
            {
                Task<IList<WorkItem>> queryResult = queryExecutor.Query(query);
                IList<WorkItem> workItems = queryResult.Result;
                if (workItems.Count == 0 || workItems == null)
                {
                    Console.WriteLine("No workitems found.");
                    return;
                }

                DataSet dataSet = new DataSet();
                DataTable dataTable = new DataTable();
                dataSet.Tables.Add(dataTable);

                foreach (KeyValuePair<string,object> keyValuePair in workItems[0].Fields)
                {
                    dataTable.Columns.Add(keyValuePair.Key);
                }

                for (int j = 0; j < workItems.Count; j++)
                {
                    WorkItem workItem = workItems[j];
                    DataRow row = dataTable.NewRow();
                    int i = 0;
                    foreach (var item in workItem.Fields)
                    {
                        row[i++] = item.Value;
                    }
                    dataTable.Rows.Add(row);
                }
                DataView dataView = new DataView(dataTable);
                wiqlDataGrid.ItemsSource = dataView;
            }
            catch (AggregateException ex)
            {
                System.Windows.MessageBox.Show(ex.Demystify().ToString());
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Demystify().ToString());
            }

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Hallo Palladin007.

Danke für diese Idee. SnoopWpf hab ich mir sogar tatsächlich schon angeschaut, bevor ich hier die Frage gepostet hatte.

Ich denke, was funktionieren könnte, ist folgender Ansatz:

  • Text der gehoverten Control ermitteln [gelöst]
  • Font bestimmen (sollte hoffentlich vom ermittelten Automation Control aus möglich sein. Mal schauen…
  • die Grösse der Textbox bzw. des Controls bestimmen. Falls überhaupt in WPF vorhanden,
    sowas wie ClientRectangle, bzw. was dem entspricht. Zumindest mal die Breite. Dann wäre es für einzeilige Texte lösbar.
    Allein das wäre schon unglaublich hilfreich.

    Möglicherweise geht das so:

    
    var hwndList = (IntPtr)(int)(listWindow.GetCurrentPropertyValue(AutomationElement.NativeWindowHandleProperty));
    var listRect = (Rect)listWindow.GetCurrentPropertyValue(AutomationElement.BoundingRectangleProperty);
    


  • Dann mit Font und MeasureString über den String candidate ausrechnen, wie viel exceeded wird.
    Oder z. B. die Breite durch die Anzahl Zeichen teilen. Je nachdem, wie das nachher genau ausschaut.
    Dies sollte dann wiederum zumindest für Fonts, bei denen jedes Zeichen die gleiche Breite hat funktionieren.
    Was bei uns momentan zum Glück der Fall ist.

Thema: Truncated Texts von aussen in WPF-Applikation ermitteln
Am im Forum: GUI: WPF und XAML

Hallo zusammen.

Gibt es eine Möglichkeit automatisch abgeschnittene Texte in WPF Applications von aussen zu erkennen?

Was meine ich damit:

  • "von aussen" heisst hier in einem externen Programm. Nicht in der Anwendung selbst. Denn die exe darf dazu nicht verändert werden (nicht von mir bestimmt).
  • Folgende Lösungen wären gut und legitim in diesem Fall (also eine davon reicht natürlich):
    a) Ein Programm, dass das aufzeigen kann per Screen oder wenn man mit der Maus über das entsprechende WPF Control fährt, das Text anzeigt.
    b) Ein fertiges Testtool, dass dies kann. Könnte auch kostenpflichtig in diesem Fall sein. Kostenlos wäre besser.
    b) Eigene Lösung. Ich hab den Teil mit den Textlängen ermitteln schon entwickelt.
    Was hier fehlen würde: Wieviele Zeichen können angezeigt werden in der mit der Mouse gehoverten Control?
    Denn dann könnte man auch den Unterschied zwischen angezeigten und eingegebenen Textlängen berechnen und daraus ermitteln, wieviel Platz man tatsächlich zur Anzeige hat.

    Ging es vielleicht auch damit?
    
    private Size MeasureString(string candidate)
    {
        var formattedText = new FormattedText(
            candidate,
            CultureInfo.CurrentCulture,
            FlowDirection.LeftToRight,
            new Typeface(this.textBlock.FontFamily, this.textBlock.FontStyle, this.textBlock.FontWeight, this.textBlock.FontStretch),
            this.textBlock.FontSize,
            Brushes.Black,
            new NumberSubstitution(),
            1);
    
        return new Size(formattedText.Width, formattedText.Height);
    }
    
    Würde das reichen um vom gehoverten Control und dem eingegebenen Text ausrechnen zu können, wieviele Zeichen tatsächlich angezeigt wurden und wieviele eingegeben wurden?
    

Ich hoffe, dass das so verständlich ist.

Nochmal kurz ganz anders ausgedrückt:

Es geht darum, dass wir einfach ermitteln können, wie lang ein Text sein kann, in einem entsprechenden Control, damit er nicht abgeschnitten werden kann.
Dazu wird ein Programm benötigt, dass dies von aussen ermitteln kann.

Thema: YAML von Swaggerhub(NSwag) wird richtig konvertiert, bis auf manche Enums
Am im Forum: Netzwerktechnologien

Hallo Kollegen,

habe folgendes Problem:

wenn ich eine YAML Datei (die das komplette Json enthält) runterlade von Swaggerhub, dann wird alles richtig konvertiert, bis auf die untenstehenden Enums.

Warum verstehe ich nicht:

xdjmd42n.0.cs(2553,182) : error CS0117: '"LoggingConfigurationMinimumSeverityToLog" enthält keine Definition für "_4".
djmd42n.0.cs(2817,210) : error CS0117: '"MessageHandlingConfigurationMinimumSeverityToLog" enthält keine Definition für "_4".
xdjmd42n.0.cs(2906,201) : error CS0117: '"SystemConfigurationExpectedMessageEncoding" enthält keine Definition für "_5".
xdjmd42n.0.cs(2957,232) : error CS0117: '"SecurityConfigurationSecurityOption" enthält keine Definition für "_0".

Diese 4 oberen werden nicht richtig konvertiert. Alles andere geht. Würde ich diese von Hand ändern, würde es auch funktionieren.

Weiss jemand woran das liegt? Wir haben sehr viele Enums. Nur bei diesen passiert das.

Wie immer, wenn ich eine bessere Lösung finde, poste ich sie hier.

Thema: Azure Devops: Automatische Notifications erhalten, wenn ein neuer Build mit Artifact vorhanden ist.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Dachte ich mir. Denn ich habe auch in diese Richtung nichts gefunden.
Ich bin in dem Fall der Ausführende. :-) Und muss einfach die Lösungen finden, sollte es nichts geben, dann muss ich das natürlich weitergeben.

Bisher nur Dinge, die eben Notification gehen oder selber herunterladen lassen.

Bisher sieht mir das so aus, als müsste ich trotzdem bei der Lösung bisher bleiben, mit dem selber runterladen. Und mir quasi einen eigenen Event machen.

Ja den Download kann man ja quasi nur auf den Docker Container selbst machen. Was auch Sinn machen kann. Ist halt hier ein anderer Anwendungsfall.

Denn wenn der Build Output erstellt ist,
dann soll lokal ein Test anlaufen mit HW/SW usw. der alles mögliche im Test bereitstellt, damit wir die Qualität garantieren können.

und dafür wird das benötigt. Deswegen muss es eine Custom Lösung in dem Fall sein.

Danke für die Hilfe nochmal.

Auf dem Weg von vorher komme ich auch weiter. :-)

Thema: Azure Devops: Automatische Notifications erhalten, wenn ein neuer Build mit Artifact vorhanden ist.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Zitat von Abt
Webhooks sind ja "standardisierte Technik". Da ist keine Magic hinter.
Kannst ja nen Doc Deiner Wahl herziehen um zu sehen, wie man sie nutzt.

Wir machen automatisierte Tests über das Release Management bzw. über die Tests Plans; nicht manuell.
Daher kann ich zumindest über den Weg wenig beitragen. Kann Dir nur sagen wie man eben Webhooks in AzD auslöst ;-)

Ja, das stimmt schon.
Mir fällt noch was anderes gerade ein, was ja auch ginge.
Falls Azure das ermöglicht.

Kennst Du einen Mechanismus, der es erlaubt, dass das Package sofort automatisch von Azure runtergeladen wird, sobald ein Build erfolgreich durchgelaufen ist?
Dann könnten wir auch einen Filewatcher benuzen.

Edit:
Oder wäre das der Buildartifacts Task?

DownloadBuildArtifacts

Geht das auch ohne eigenen lokalen build agent?

Weil wenn das natürlich nur auf den Azure Container runtergeladen wird, bringt das nichts.
Würde das aber lokal runtergeladen, wäre das eine mögliche imho Lösung, die gut genug ist.

Thema: Azure Devops: Automatische Notifications erhalten, wenn ein neuer Build mit Artifact vorhanden ist.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Danke @Abt. Der Link zum Ausführen der Webhooks ist sehr hilfreich. :-)
Den kann ich auf jeden Fall brauchen.

Teil a) Was gemacht werden soll

Ich kanns auch nochmal programmatisch erklären:

1.) Programm läuft (Console App), dass die Notification erhält:

Azure Devops hat einen neuen Build der Pipeline mit der ID xyz erfolgreich gebuildet.
Nur dann wird auch eine Notification gesendet, die das Console Programm empfangen kann.

2.) Die Artifakte von der Build Pipeline werden heruntergeladen und entpackt.
3.) Die einzige exe die darin ist wird gestartet. Automatisch.

Grund für das Programm:

Es soll ein vollautomatisches Testsystem erstellt werden,
das immer den neuesten Build mit der exe in Zusammenhang ausführt und testet.

Es soll auch dann funktionieren, wenn keiner da ist.

Teil b) Was gelöst werden muss, damit a) überhaupt für uns machbar wird:

Wie kann man dazu einen Webhook benutzen? Falls das überhaupt der richtige Ansatz ist.
Sollte man überhaupt einen Webhook benutzen?
Es könnte ja auch sein eine Azure Function ist besser?
Oder das Event Grid?

Das bin ich gerade alles am rausfinden und weiss noch nicht, was das beste dabei ist...

Vor allem ob es nicht schon eine Standardnotification gibt, die einfach abgefragt werden kann,
evtl. auch ohne, dass man noch einen neuen Service integrieren muss?

Das weiss ich noch nicht. :-)

Thema: Azure Devops: Automatische Notifications erhalten, wenn ein neuer Build mit Artifact vorhanden ist.
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Wir haben gerade die Herausforderung bei uns im Projekt, dass wir Notifications brauchen,
wenn auf Azure ein neuer Build vorliegt, der die Artefakte enthält.

Die sollen dann von einem Programm empfangen werden (Console Anwendung), die dann den Build auf den Rechner lokal herunterlädt.

Jetzt ist die Frage, wie wir das machen können.

Dazu bisher meine Recherchen:

Folgendes habe ich dazu (bisher) in Betracht gezogen, weil ich denke dass eine der Kategorien zumindest helfen sollte diese Notifications/Events zu empfangen.

Also entweder ginge das vermute ich über:

- Azure Functions
- Azure Notification Hubs
- Azure Web Hooks (bisher sieht mir das am vielversprechendsten aus)

Hier gibt's ein Beispiel das helfen könnte:

https://andrewlock.net/creating-my-first-azure-functions-v2-app-a-webhook-and-a-timer/


Was ebenfalls möglich wäre, als Notlösung:

In bestimmten Abständen pollen.
Mit Rest API den letzten Build holen ()

Wie würdet ihr das angehen?

ich werde auf jeden Fall versuchen das zu lösen und dann wie immer die Lösung hier posten.
und dann davon den Artifact herunterladen.