Laden...
Avatar #avatar-4129.gif
FrankenDerStein myCSharp.de - Member
Deutschland Dabei seit 18.06.2015
Benutzerbeschreibung

Forenbeiträge von FrankenDerStein Ingesamt 90 Beiträge

01.02.2025 - 10:36 Uhr

Grüße,

Ich habe nach dem genannten Schema eine Funktion gebaut.

Es funktioniert, es ist aber echt langsam.

Für 10 MB braucht es 20 stunden.

        private static List<int> ConvertDecimalToBase(BigInteger decimalValue, int baseTo)
        {
            List<int> baseValue = new List<int>();
            while (decimalValue > 0)
            {
                int remainder = (int)(decimalValue % baseTo);
                baseValue.Add(remainder);
                decimalValue /= baseTo;
            }

            return baseValue;
        }
        public static List<int> ConvertBase256ToBase23(byte[] base256Array)
        {
            BigInteger value = 0;
            for (int i = base256Array.Length - 1; i >= 0; i--)
            {
                value = value * 256 + base256Array[i];
            }

            return ConvertDecimalToBase(value, 23);
        }
26.01.2025 - 00:15 Uhr

Ich danke für eure Unterstützung.

Ich bin wohl etwas durcheinander geraten.

Das Ziel sind Base23 zu Base256 und umgekehrt.

Ich habe mir das Horner-Schema angesehen, die Umsetzung  macht mir aber noch Kopfzerbrechen.

Mfg.

25.01.2025 - 03:42 Uhr

Grüße,

es gibt ja sehr viele Methoden, wie man so was macht, das was ich gefunden habe bisher hat ein bestimmtes Problem aufgewiesen:

Sie wollten in dezimal umrechnen um dann auf eine andere basis umzurechnen.

Die daten welche ich umrechnen will, können auch 30Byte und weit mehr sein.

Leider ist meine "Lösung" leider gescheitert. Es gibt da ein rechen Fehler den ich grade suche.

Die Funktion gibt bei [2,11](Byte-Array) nicht wie erwartet WW als Ergebnis raus, stattdessen kommt CL(Hex 81) als Ergebnis.

Erläuterung : Hex 211 ist gleich 529 als dezimal zahl, was 23^2 entsprich und somit WW.

Falls dir bei deiner such eine Methode aufgefallen ist, die eventuelle das Problem mit dem Speicher nicht hat, wäre sehr hilfreich.

Mfg.

23.01.2025 - 23:13 Uhr

Grüße,

Ich versuche gerade ein Mathe problem zu lösen und mir raucht der Schädel.

Ich habe zwei listen einmal mit der Einheit Base256(Byte) und eine liste als aus Ausgabe mit der Einheit Base23.

Ich muss in beide Richtungen Konvertieren.

Der Daten typ Base23 ist als char array definiert und ist als Zeichen A-W definiert.

Ich habe eine Lösung mir ausgedacht, die mir aber Kopfschmerzen einbringt. Um genau zu sagen ist meine Haupt sorge ist der übertrag. Ich kann nicht abschätzen wann der platz. Das anderer ist die Skalierbarkeit. Ich kann die den Prozess nicht auf mehrere Threads aufteilen.

Die Rechnung wird benötigt um bytes in eine Farb-Kodierung umzurechnen.

Meine frage ist, gibt es eine bessere Lösung ?

Das ist meine erste variante :

        const string Base23Table = "ABCDEFGHIJKLMNOPQRTUVW";
        
        internal static string Base255ToBase23(byte[] base255)
        {
            List<int> result = new List<int>();
            int carry = 0;

            foreach (byte b in base255)
            {
                int value = b + carry * 255;
                while (value > 0)
                {
                    result.Add(value % 23);
                    value /= 23;
                }
            }

            // Letzte Übertragsstelle hinzufügen, wenn sie größer als 0 ist
            if (carry > 0)
            {
                result.Add(carry);
            }

            // Konvertiere die Liste von Indizes in die Base23-Zeichenkette
            StringBuilder base23 = new StringBuilder();
            foreach (int index in result)
            {
                base23.Append(Base23Table[index]);
            }

            return base23.ToString();
        }
03.11.2024 - 02:22 Uhr

Grüße,

Danke dir, ich Tatsächlich einfach nur was wichtigen übersehen.

Jetzt funktioniert die Anmeldung.

Aber so oder so finde ich das die Googles Entwickler Konsole weniger übersichtlich und verständlich ist als Microsoft Azure Entwicklerkonsole.

Wo bei man wird bei Microsoft am Anfang erstmal in ein Tutorial gepresst wird, was den einstieg besser macht.

Und JA ich bin ein fan von der empirischen Vorgehensweise, normal komme ich damit super zurecht, aber ausnahmen gibt es natürlich immer.

02.11.2024 - 09:31 Uhr

Grüße,

Könntest du mal den Code zeigen, der dein Server baut und ausführt?

Ebenso wäre der StackTraces wäre auch interessant.

Mfg

01.11.2024 - 22:39 Uhr

Grüßt euch,

Ich habe gerade ein Problem und hoffe einer kann mich aufklären.

Ich wollte mir mal einen kleinen Bot schreiben, der meine Emails  nach einem schlag Wort durchsucht, diese Email dann gegen ein Sprach-Modell wirft, auswertet ob es eine zusage oder absage ist und dann mir ein Termin erstellt.

Ja so weit die Idee...

Um das um zu setzen kam ich auf die Idee, die Google API zu nuten, da mein E-Mail Konto dort läuft.

Das ding ist, ich komme aber mit der Entwickler Konsole nicht zurecht.

Ich habe ein API Schlüssel aber... Wenn ich mein Test starte um den Login Vorgang zu testen, kommt, wenn ich mich versuche mich mit dem Konto versuche anzumelden, mit dem ich auch den Schlüssel beantragt habe, "Zugriff verweigert, das Projekt ist nicht freigegeben, nur Entwickler können es testen,  wenden sie sich an den Entwickler"....

Ja... aber der bin ich doch... denke ich...

Hat wer ein Plan was ich machen muss?

Bei den Rollen habe ich auch kein Durchblick. Wenn bestimmte rechte einstellen muss? Wie mach ich das? Ich brauch E-Mail und Kalender zugriff.

Ich hoffe ihr könnt licht ins dunkel bringen.

29.07.2024 - 18:54 Uhr

Grüße,

Da Jetzt nichts kam habe ich mal nach was gesucht, und bin darauf gestoßen : https://stackoverflow.com/questions/1651406/programmatically-starting-an-http-server-in-c

Bin mir nicht so sicher ob das damit gemeint wurde. TLS/SSH bekam ich damit noch nicht zum laufen.

MfG

22.07.2024 - 19:52 Uhr

Warum Du den gezeigten Code mit Modulen etc umsetzt... versteh ich nicht.
Sowas kann man binnen weniger Zeilen mit ASP.NET Core direkt einfach, stabil, simpel machen und braucht nicht irgendwelchen (toten?) Libs.

Die Module übernehmen verschiedene Aufgaben. Das eine ist der SOAP Services und der andere ist die Web Oberfläche.

Mir fehlt es gerade die Vorstellung. Hast du dafür ein Beispiel?

21.07.2024 - 20:09 Uhr

Ich such ja nach einer API für https. im Grunde sollten die alle gleich sein, oder ?

ASP.net ist wenn ich es richtig sehe keine API sondern ein Services ähnlich wie PHP. Es ist schon ein kompletten Server mit Infrastruktur.

Griffen hingegen ist nur das https Protokoll. Ich übernehme die Infrastruktur. Sowas suche ich.

Du schreibst du weist nicht was das für ein Server ist. Was soll ich dir genauer beschreiben?

Das was jetzt folgt ist eigentlich alles, in dem fall sind paar Module nicht inbegriffen aber das web call Modul ist da voll abgebildet.

Und so wie ich es verstehe ist es ein einfacher Socket Server.

       partial class InputServer
       {
           private volatile static DirectoryInfo serverDirInfo = new DirectoryInfo(ShareAndReceive.Properties.Settings.Default.ServerDir);
           private HttpServer serverLinsener;

            public InputServer()
            {
                DataProvisionServerModule mod = new DataProvisionServerModule(serverDirInfo);
                mod.ItemEntrance += mod_ItemEntrance;

                ModuleManager moduele = new ModuleManager();
                moduele.Add(mod);
                moduele.Add(new WebCallServerModul(serverDirInfo));

                serverLinsener = new HttpServer(moduele);
                serverLinsener.AllowedSslProtocols = System.Security.Authentication.SslProtocols.Ssl3;
            }

            private void mod_ItemEntrance(object sender, Item e)
            {
                if (ItemEntrance != null)
                    ItemEntrance(sender, e);
            }

            public event EventHandler<Item> ItemEntrance;

            public void Start()
            {
                serverLinsener.Start(IPAddress.Any, 2241);
            }

            public void Stop()
            {
                serverLinsener.Stop();
            }
    //---------------------------------------------------------------------------------------------------------
    internal class WebCallServerModul : HttpServerModulBase
    {
        private DirectoryInfo serverDirInfo;

        public WebCallServerModul(DirectoryInfo serverDirInfo)
        {
            this.serverDirInfo = serverDirInfo;
        }

        public override void Get(Uri uri, Stream output, out int res, out long resL)
        {
            serverDirInfo.Refresh();
            if (serverDirInfo.Exists)
            {
                FileInfo fileAdress = new FileInfo(serverDirInfo.FullName + uri.LocalPath.Replace("/", "\\"));
                fileAdress.Refresh();
                if (!fileAdress.Exists)
                {
                    InterWebCall(uri, output, out res, out resL);
                }
                else
                { 
                    res = 0;
                    resL = 0;
                }
            }
            else
            {
                Log.WriteLine(serverDirInfo.FullName + " - Not Exist");
                InterWebCall(uri, output, out res, out resL);
            }
            Log.WriteLine($"Request - {uri.ToString()} > {res}");
        }

        public override void Post(Stream file, IPAddress quelle, Dictionary<string, string> parameter)
        {
        }

        private void InterWebCall(Uri uri, Stream output, out int res, out long resL)
        {
            string regName = uri.LocalPath.Replace("/", "\\");
            if (regName.Contains("upload"))
            {
                byte[] uploadPage = ShareAndReceive.Properties.Resources.upload;
                output.Write(uploadPage, 0, uploadPage.Length);
                resL = uploadPage.Length;
                res = 200;
            }
            else if (regName.Contains("info"))
            {
                long i = output.Position;

                XmlDocument infoXml = new XmlDocument();
                XmlElement main = infoXml.CreateElement("Info");
                XmlElement id = infoXml.CreateElement("ID");
                XmlElement name = infoXml.CreateElement("Name");
                id.InnerText = "1232";
                name.InnerText = Dns.GetHostName();
                main.AppendChild(id);
                main.AppendChild(name);
                infoXml.AppendChild(main);

                infoXml.Save(output);
                resL = output.Position - i;
                res = 200;
            }
            else if (regName.Contains("ICON"))
            {
                long i = output.Position;
                ShareAndReceive.Properties.Resources.SR.Save(output);
                resL = output.Position - i;
                res = 200;
            }
            else if (regName.Contains("background"))
            {
                long i = output.Position;
                Random random = new Random();
                switch (random.Next(1, 6))
                {
                    case 1:
                        ShareAndReceive.Properties.Resources.Background1.Save(output, ImageFormat.Jpeg);
                        break;
                    case 2:
                        ShareAndReceive.Properties.Resources.Background2.Save(output, ImageFormat.Jpeg);
                        break;
                    case 3:
                        ShareAndReceive.Properties.Resources.Background3.Save(output, ImageFormat.Jpeg);
                        break;
                    case 4:
                        ShareAndReceive.Properties.Resources.Background4.Save(output, ImageFormat.Jpeg);
                        break;
                    case 5:
                        ShareAndReceive.Properties.Resources.Background5.Save(output, ImageFormat.Jpeg);
                        break;
                    case 6:
                        ShareAndReceive.Properties.Resources.Background6.Save(output, ImageFormat.Jpeg);
                        break;
                    default:
                        ShareAndReceive.Properties.Resources.Background1.Save(output, ImageFormat.Jpeg);
                        break;
                }
                resL = output.Position - i;
                res = 200;
            }
            else
            {
                res = 404;
                resL = 0;
            }
        }
    }
21.07.2024 - 16:53 Uhr

Das ist ja genau das was ich meine. "Es ist Tod, Jim"

Von Kestrel habe ich noch nichts gehört.  Ich verstehe es als eine Server des ASP Core Frameworks, liege richtig?

Meine "Benutzer" Anwendung ist eine UI mit integriertem Server für Interprozesskommunikation und für aus halb mit einer Web Oberfläche und SOAP(kleine Korrektur meiner seist, Rust war es nicht).

Griffen ist sehr kompakt und erfordert keine höheren rechte, damals waren das die Haupt Kriterien.

Mir fehlt es gerade an Vorstellungskraft wie ich mir das vorstellen habe, wie diese implementiere.

Dieses Projekt ist auch mittlerweile sehr alt und läuft auf .NET Framework 4.6.2. (Musss ich auch noch hochziehen)

Das was ich dann auch noch sehe ich muss das ASP Framework mitliefern für die Installation.

Ich bräuchte bitte mehr Informationen.

19.07.2024 - 20:22 Uhr

na gut aber eine alter native wär schon schön. Wie gesagt erfährt das Projekt kaum weiter Entwicklung. Auf Beiträge wird nicht eingegangen.

15.07.2024 - 14:20 Uhr

Grüße, ja das genau das ist das Repo.

Interessant das man das in der Projekt Datei reinschreiben kann. Aber da auch etwas fehl am platz.

14.07.2024 - 18:21 Uhr

Grüßt euch,

Ich suche eine alternative zum Griffin Web Server.

Zum einen ist nicht geklärt welche Lizenz verwendet wird und zum anderen wird dem Anschein keine Weiterentwicklung vorangetrieben. Krankheiten musste ich an der API selbst beheben.

Ich brauche eine Socket Https Server API am besten mit MIT Lizenz.

Meine derzeitige Anwendung stellt einen Services ähnlich wie Rust unter den Port 2241 zu Verfügung. Dieser Services läuft über die besagte API. Die Handhabung ist bei griffen sehr schön einfach. Man hat eine Server klasse die instanziiert wird. Mit ihr steuert man den Server. An diese werden einfach selbst definierte Request Handler angehangen und das wars. Der Request Handler hat eine Funktion die eine liste der Parameter wie auch Streams zu Verfügung stellt, um zu uploaden oder downloaden. Als Return wird der resultierende zahlen code zb. 200 oder 400 übergeben.

Um den ganzen Rest wie auch SSL3 kümmert sich die API.

Habt ihr Empfehlungen?

21.05.2024 - 20:22 Uhr

Mit Standard meine ich ein genormtes Protokoll welches ein Datei System abbildet und ein Synchronisation ermöglich.

Kann Http ein Datei System abbilden mit allen Informationen, die Synchronisation ermöglicht?

Nur mal als Beispiel, wenn man ein Tool bauen will der mit jeder Cloud Kommunizieren können soll. Kann man das simple Http Protokoll verwenden?

19.05.2024 - 19:26 Uhr

Grüßt euch,

Ich habe eine Frage:

Gibt es einen Sichern Web Standard um Dateien auf ein Cloud zu laden oder runter zu laden oder kocht da jeder sein eigene Suppe?

Ich frage das mich das, da es mir schwer fehlt raus zu finde wie z.b. der Google Cloud Client kommuniziert.

Ich kann mir nicht vorstellen das HTTP mit TLS(HTTPS) für die Dateien Austausch verwendet wird, da das Protokoll nicht gerade für ein Datei Transfer gemacht ist zumindest nicht ohne Overhead. FTPS ist dafür zwar gemacht, aber gilt nicht als Sicher (zumindest was ich hörte). Daher sollte man es nicht ohne VPN verwenden.

Weis jemand von euch wo rüber die Clients laufen?

MfG.

06.05.2024 - 15:55 Uhr

Zitat von Abt

  • Beim Compilern soll eine Warnung aufkommen, wenn bei einer ID für eine Sprache kein Text hinterlegt wurde.

Das würde ja bedeuten, dass das immer Teil eines Kompilats ist - was in der realen Welt eher seltener der Fall sein dürfte, je größer die Anwendung ist.

Ja stimmt, aber meine Idee war es dies halt auch für Setup Programme nutzbar zu haben, möglichst schlank, für selbst extrahierende Programme.

Mir war schon irgendwo bewusst das irgendwo sowas geben muss. Die Idee ist ja nicht neu, wenn man so will. Ich hatte nur bei meiner suche nichts gefunden.

Die Erweiterung die ihr mir vorgeschlagen habt, ist genau dass was ich bauen will. Nur finde ich das Tool nicht schön gestaltet. Die Ansicht in Form einer Tabelle ist in meinen Augen viel zu überladen. Ich würde die einzelnen sprachen in Tabs organisieren, damit die Texte schön viel platz haben. Insgesamt würde ich die Bedingung etwas einfacher gestallten.

21.04.2024 - 18:24 Uhr

Grüßt euch, ich beschäftige mich gerade in meiner Freizeit mit Visual Studio Erweiterungen und hatte Idee ein Open Source Projekt zu starten.

Meine Idee war es ein Sprachen Manager für VS zu schreiben.

Folgende Dinge soll er können :

  • Die Erweiterung für ein XML-Datei-Typ ein, den man zu einem Projekt hinzufügen kann, der als Ressource mit Kompiliert wird und eine CS die, die Datei verwaltet.
  • Wenn Man auf die Datei öffnen will, erscheint ein Fenster mit einer Tabellarischen Ansicht aller Text-IDs und deren Texten in Tabs der jeweiligen Sprache. Zu Beispiel Deutsch, Englisch, Französisch...
  • Wenn im Code ein String Mackiert wird, soll im Context Menu ein Eintrag geben, welcher den String in den XML-Datei-Typ überführt. Im Code steht dann sowas wie "Strings.Get("GenerierteID")" an der Stelle wo der ursprüngliche String war. Das soll auf ähnlicher weise bei WPF funktionieren.
  • Beim Compilern soll eine Warnung aufkommen, wenn bei einer ID für eine Sprache kein Text hinterlegt wurde.
  • Texte sollen voll automatisch übersetzt werden können. In der Tabellen Ansicht soll es ein Button geben welcher die Texte gegen einen Dienstleister wirft z.b. Google.
  • Der XML-Datei-Typ soll nach Excel Exportiert und auch wider von Excel zurück Importiert werden können. (Wenn man es Professionell übersetzen lassen will, ist das sehr Praktisch.)

Das ist so Idee die ich verfolge, die kommt gewisser weise aus eignen leid heraus. Ich bin zu faul für kleine wie auch große Projekte mehrere sprachen zu Implementieren zumal in VS keine einfach zu handhabende Möglichkeit gibt. Zumindest was ich so gesehen habe. Da könnt ihr mich gerne Korrigieren.

Jetzt würde ich Gerne wissen, was haltet ihr von der Idee?

Ebenso würde ich gerne wissen, hat jemand von euch schon Erfahrungen gesammelt in der Entwicklung von VS Erweiterungen?

MfG

20.02.2024 - 20:31 Uhr

Grüße,

Danke für den Tipp ich kuck es mir an.

Im Anhang ist es Bild, wie ich es mir vorstelle.

Mfg.

16.02.2024 - 00:23 Uhr

Grüße,

Ich hätte mal eine Frage:

Ich möchte in einer TreeViwe eine Leiste haben, welche mir Zeilen Nummer darstellt.

Der Baum welcher in der TreeViwe angezeigt wird, stellt den Inhalt einer XML-Datei da. Die Zeilen-Nummer stellt die Zeile des Elements im Dokument dar. Je nach dem wie viele Elemente aufgeklappt werden, werden mehr oder weniger Zeilen-Nummern angezeigt.

So meine Vorstellung.

Wie Zeichne ich diese Leiste in die TreeViwe rein? Oder gibt es sowas schon?

MfG.

04.03.2023 - 21:12 Uhr

Ich danke für die Informationen.

Ich musst leider feststellen, dass sich doch nicht so viel Zeit habe, um mich um das Projekt zu kümmern.
Deswegen Endschuldige ich mich, dass ich mich erst jetzt melde.

Ich werde den Algorithmus mir mal ansehen und ihn Implementieren.

Meine eigen Bemühungen haben zur dieser zeit leider nicht so tolle Früchte getragen.

Sodass ich mir für XML einen eigenen Algorithmus ausgearbeitet habe.

Für die Verarbeitung von Text habe ich es nicht eigesehen dafür mir mein Hirn zu zermartern.

Die suche war da hingehend echt nervig: Ich bekam fast nur ausschließlich einfache vergleiche vorgeschlagen, wo raus ein Bool resultiert.

Deswegen nochmals danke für die Informationen.

15.02.2023 - 19:16 Uhr

Grüße euch,

Jeder kenn doch die Programme, welche die Unterschiede zwischen Texten(meistens für Code) aufzeigen.

Meistens werden diese über Farb-Maskierungen im Text angezeigt.

Ein Beispiel für solch ein Programm ist WinMarge.

Diese Fiktionalität will ich, ähnlich wie in solchen Programmen, bei mir in meinem Tool implementieren.

Ich habe 2 Strings die es zu vergleichen glitt. Ebenso sollen die unterschiede mit 3 verschiedenen Farben dargestellt werden.

Z.b. Grün, für hinzugekommen, Rot abgegangen, Gelb ausgetauscht.

Ich habe erst an einer RichTextBox gedacht, womit die Unterschiede dargestellt werden.

Jetzt die Frage an euch, welche Möglichkeiten gibt es?

Gibt es Algorithmen oder APIs die ich verwenden kann?

Ich bin gespannt auf eure Ratschläge.

Ich finde so ein Text zu vergleichen wirkt wie eine sehr triviale Aufgabe, aber es ist ein regelrechtes Wespennest. Besonderes wenn man Anfang und Ende eines Unterschieds darstellen will und das so performant wie möglich.

12.06.2022 - 16:42 Uhr

ok Danke für die Information.

Da frage ich mich:
Wie machen es PowerDVD, VLC und co. Die pumpen ja auch einfach den Daten Strom von der DVD/BD in den HDMI\S/PDIF Ausgang.

Nutzen sie die Standard Audio Schnittstellen von Windows oder Benutzen die auch Virtual Audio Devices?

Gibt es eine API zur Standard Audio Schnittstellen von Windows?

MfG.

07.06.2022 - 18:48 Uhr

Danke für die Antwort.

Hört sich schon so an als wäre es nicht so einfach.

Fragen die ich mir stelle, wo rauf ich noch keine Antwort fand, sind :

  1. Wie bekomme ich den Datenstrom vom Audio Gerät?
  2. Wie bekomme ich den Datenstrom in die HDMI Leitung? Mit Socket kann man da ja nicht arbeiten, oder? 😁
  3. Gibt es Möglichkeiten der Trace Analyse?

MfG

06.06.2022 - 14:42 Uhr

Grüße euch meine verehrten Kollegen,

Ich brauchte mal par Ratschläge zu folgender Idee:

Ich möchte einen Dolby Digital HD oder DTS HD Live Encoder bauen.

Das Programm soll sehr einfach aufgebaut sein. Ein fester wo ich die Mehr-Kanal quelle (5.1 und co.) auswähle z.b virtuelle Audio Kabel von VB Audio (Audio Gerät) und der Ziel HDMI Ausgang, eventuell ein Start und Stop Knopf.

Hat wer eine Idee wie ich das am basten bewerkstelligen kann?

Vorschläge für APIs oder Open Sources Projekte die anreize bieten könnten, wären hilfreich.

Erfahrungen mit Audio Schnittstellen und Interessante Informationen wären auch cool.

Mit freundlichen Grüßen.

08.05.2022 - 22:07 Uhr

Grüße,

Ich danke für eure Hilfe.

Es war wirklich die Firewall, da bei war ich mir so sicher das diese richtig eingestellt hatte.

Bis ich gesehen habe das da was nicht ganz stimmte und meine Stirn sich handförmig rot färbte.

Ich habe dennoch das Modul überarbeitet.

Gibt eine Möglichkeit eine Prüfung einzubauen welche die Firewall prüft.
Kann man das Prüfen?

MfG.

07.05.2022 - 01:04 Uhr

Hallo meine Kollegen.

Ich habe ein Problem mit einem Sorgenkind : Siehe Code*
Dieses Modul antwortet auf einfache Broadcast Anfragen und versendet auch welche nach bedarf. Der Port 15000 wird dazu abgehört und ist auch das Ziel.
Benutzt wird es um andere Teilnehmer im netz zu erkannten und deren IPAdressen in Erfahrung zu kriegen.
Funktioniert eigentlich auch, derzeit aber habe ich ein Phänomen das der Broadcast nur auf der Loopback Adresse läuft und auch nur dies empfängt.
Packte von anderen Geräten werden einfach Ignoriert.

Um das zu Prüfen habe ich 2 Gerät, einmal das Hauptgerät wo mit ich entwickele und ein Testgerät. Alle Geräte befinden sich im selben WLAN-Netz.

Netz-Trace (Alle Netz-Interfaces) Hauptgerät:


384412	3275.144940	192.168.178.31	UDP	255.255.255.255	57	15001 → 15000 Len=15<<--------- Von einem anderen Gerät abgeschickt. (Wird nicht gesehen)
393007	3373.236151	192.168.204.1	UDP	255.255.255.255	47	55273 → 15000 Len=15
...
428294	3718.543768	192.168.178.31	UDP	255.255.255.255	57	15001 → 15000 Len=15
429091	3734.836399	192.168.204.1	UDP	255.255.255.255	47	58670 → 15000 Len=15 <<--------- Selbst abgeschickt. (Wird gesehen)

192.168.178.31 = Test Gerät
192.168.204.1 = Loopback Interface

Auf dem anderen Gerät erscheinen nur die eigenen Pakete und nicht die vom Hauptgerät.

Ich hoffe jemand hat eine Idee wo das Problem liegt.

MfG.

*


    public class IPRequestServer
    {
        static Dictionary<string, Request> requests = new Dictionary<string, Request>();
        Thread server;
        public static UdpClient requester;
        private Receiver udpReceiver;
        string deviceName;
        public IPRequestServer()
        {
            udpReceiver = new Receiver();
            udpReceiver.Device += Device;
        }
        public void Start()
        {
            requester = new UdpClient(AddressFamily.InterNetwork);
            requester.EnableBroadcast = true;
            requester.AllowNatTraversal(true);
            server = new Thread(new ThreadStart(serverMain));
            server.Start();
        }
        public string DeviceName
        {
            get
            {
                return deviceName;
            }
            set
            {
                deviceName = value;
                udpReceiver.setDeviceName(deviceName);
            }
        }
        public void Send()
        {
            byte[] value = ASCIIEncoding.ASCII.GetBytes(deviceName);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 15000);
            requester.Send(value, value.Length, endPoint);
        }
        public static Request[] Reqersts
        {
            get
            {
                return requests.Values.ToArray();
            }
        }
        public void Stop()
        {
            udpReceiver.StopListening();
            if (server != null && server.IsAlive)
                server.Abort();
            requester.Close();
            requester = null;
            server = null;
        }
        private void serverMain()
        {
            udpReceiver.StartListening();
        }
        public event EventHandler<Request> Device;
        private class Receiver
        {
            public event EventHandler<Request> Device;
            private readonly UdpClient udp;
            private bool canRun = false;
            public string deviceName;
            public Receiver()
            {
                udp = new UdpClient(15000);
            }
            public void setDeviceName(string device)
            {
                deviceName = device;
            }
            public void StartListening()
            {
                canRun = true;
                this.udp.BeginReceive(Receive, new object());
            }
            public void Receive(IAsyncResult ar)
            {
                IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 15000);
                byte[] bytes = udp.EndReceive(ar, ref ip);
                string message = Encoding.ASCII.GetString(bytes);
                if (deviceName != message)
                {
                    if (!requests.ContainsKey(message.Trim()) || requests[message.Trim()].Aresse != ip.Address)
                    {
                        Request dates = new Request();
                        dates.Aresse = ip.Address;
                        dates.client = message;
                        dates.time = DateTime.Now;
                        if (requests.ContainsKey(message.Trim()))
                        {
                            requests[message.Trim()] = dates;
                        }
                        else
                        {
                            requests.Add(message.Trim(), dates);
                        }
                        Thread proc = new Thread(new ParameterizedThreadStart(delegate(object val)
                        {
                            if (Device != null)
                            {
                                Device(this, (Request)val);
                            }
                        }));
                        proc.Start(dates);
                    }
                    byte[] m = ASCIIEncoding.ASCII.GetBytes("aw:" + deviceName);
                    //IPReqestServer.reqester.Send(m, m.Length, new IPEndPoint(ip.Address, 15001));
                    if (!message.Contains("aw:"))
                        udp.Send(m, m.Length, new IPEndPoint(ip.Address, 15000));
                }
                Thread.Sleep(500);
                if (canRun)
                    StartListening();
            }
            public void StopListening()
            {
                canRun = false;
            }
        }
        public struct Request
        {
            public IPAddress interfaceAress;
            public IPAddress Aresse;
            public DateTime time;
            public string client;
        }
    }

22.02.2022 - 22:52 Uhr

Danke, auch wenn ich etwas spät antworte.

Ich habe deinem Rat gefolgt und habe alles noch mal umgestellt.

Ich finde es schade, dass man in WPF keine komplexeren Vererbungsketten aufbauen kann.
Ich arbeite gerne mit Vererbung, da zum einen es (wie schon erwähnt) Schreibarbeit verringert aber auch die Wartungsarbeiten.
In dem Fall wollte ich einen Rahmen bauen der gewisse Grundfunktionen und Optische Eigenschaften festlegt. Der Erbe sollte somit den Rahmen besitzen und die eigenen Funktionen, z.b.:
In meinem Fall ist der Rahmen eine Einheit welche die Grundbedürfnisse befriedigt um in eine Liste eingegliedert zu werden. Der Rahmen sollte dann geerbt werden von den eigentliche Elementen die aufgelistet werden sollten. (Neben bei geschieht das durch ein Workaround im Hintergrund und sind nicht starr immer die selben Elemente.) Die Elemente haben dann die Fähigkeiten, z.b Video Player, Musik Player, Bild Darstellung, Text und Link. Durch den Rahmen sollte auch verhindert werden das es doof aussieht und einheitlicher ist.

Das ist der Hintergrund was der Sinn dahinter war. Jetzt ist es halt anders und Funktioniert auch.

Ich Danke für deinen Hilfe, Anregungen sind weithin gern gesehen.

Mit freundlichen Grüßen.

04.02.2022 - 20:27 Uhr

Vererbung als Faulheit (sorry ) würde ich bei WPF nicht machen - also nur um Schreibarbeit zu sparen. (Vererbung, die nur das zum Ziel hat, würde ich generell in Frage stellen)

Ist nicht die ganze Objektorientierung drauf aufgebaut um Schreibarbeit zu sparen? 😁

Was meinst Du passiert, wenn in deinem "Basis-XAML" der Content setzt und im "abgeleiteten" XAML nochmal?
Du musst WPF schon mitteilen, wie es die beiden Inhalte zusammen bringen soll.
Außerdem erzwingt XAML, dass man das Control instanziieren kann.
Ob das dein Fehler ist, weiß ich nicht, könnte aber auch ein Folgefehler sein.

Zu diesem Zweck habe ich folgendes in der Klasse angegeben :


[ContentProperty("Children")] <-------------
public abstract partial class ListItem : ClosableUserControl
{
...
public UIElementCollection Children
    {
        get
        {
           return contentGrid.Children;
        }
    }...

Zum Rest muss ich mir noch Gedanken machen, mmm ....

04.02.2022 - 12:32 Uhr

Grüße,

Ich habe eine Frage in Bezug auf Vererbung in Verbindung WPF Elemente.

Ich versuche einen Rahmen zu definieren, der derzeit so aufgebaut ist:


    public abstract class ClosableUserControl : UserControl
    {
        public abstract event EventHandler Closing;
    }


    [ContentProperty("Children")]
    public abstract partial class ListItem : ClosableUserControl
    {
        public ListItem()
        {
            InitializeComponent();
            StyleHelper.SetButtonColor(closeButton);
        }
        public string Title
        {
            set
            {
                tilte.Text = value;
            }
            get
            {
                return tilte.Text;
            }
        }
        public UIElementCollection Children
        {
            get
            {
               return contentGrid.Children;
            }
        }
        protected void Close(object sender, RoutedEventArgs e)
        {
            Closing(this, new EventArgs());
        }
        public abstract void OpenDialog();

        public override event EventHandler Closing;

        protected void Open(object sender, RoutedEventArgs e)
        {
            OpenDialog();
        }
    }


<helper:ClosableUserControl  xmlns:helper="clr-namespace:AnimatedModules.Helper;assembly=AnimatedModules" x:Class="xxx.Items.ListItem"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:ShareAndReceive.Items"
             mc:Ignorable="d" d:DesignWidth="246.876" Height="107.813">
    <Grid Margin="5">
        <Grid Background="#FF404040">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <TextBlock Height="25" Margin="0" VerticalAlignment="Top" x:Name="tilte" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Grid.Row="0" Foreground="DarkGray"/>
            <Grid x:Name="contentGrid" VerticalAlignment="Stretch" Background="DarkGray"  Grid.Row="1" /> <!--------- Der Inhalt --------------->
            <Button x:Name="actionTitle" Grid.Row="2" Height="20" MinWidth="50" HorizontalAlignment="Right" Margin="0,0,8,0" FontFamily="Calibri" FontSize="11" TextOptions.TextFormattingMode="Display" TextOptions.TextHintingMode="Fixed" Click="Open">
                >>
            </Button>
            <TextBlock Grid.Row="2" Height="20" HorizontalAlignment="Left" Margin="8,8,0,0" FontFamily="Webdings" FontSize="11" MouseUp="Close" Background="Transparent" Text="r" Foreground="Gray" FontStyle="Normal" FontWeight="Bold" x:Name="closeButton"/>
        </Grid>
    </Grid>
</helper:ClosableUserControl>

Der erbe des Rahmens:


    public partial class TextItem : xxx.Items.ListItem
    {
        string value;
        public TextItem(string v)
        {
            InitializeComponent();
            value = v;
            Title = "Text";
        }
        public override void OpenDialog()
        {
            Text textWindow = new Text();
            textWindow.Value = value;
            textWindow.ShowDialog();
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (value.Length > 25)
                msg.Text = value.Substring(0, 25) + "...";
            else
                msg.Text = value;
        }
    }


<local2:ListItem
             xmlns:local2="clr-namespace:xxx.Items" x:Class="Communication.TextItem"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Communication"
             mc:Ignorable="d" d:DesignWidth="280"
             Height="95" VerticalAlignment="Top"  Loaded="UserControl_Loaded">
    <TextBlock Height="25" Margin="8" VerticalAlignment="Center" Background="DarkGray"  Grid.Row="1" Name="msg" Padding="3">
        <TextBlock.Resources>
            <Style TargetType="Border">
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="BorderThickness" Value="2,0"/>
            </Style>
        </TextBlock.Resources>
    </TextBlock>
</local2:ListItem>

So weit so gut, wenn nicht dieser Fehler kommen würde, denn ich nicht verstehe:
Fehler Bei "xxx.Items.ListItem" darf es sich nicht um den Stamm einer XAML-Datei handeln, da beim Definieren XAML verwendet wurde. Zeile 2 Position 14. ...\xxx\Items\TextItem.xaml 2

Meine Frage ist was ist der Fehler, oder kann ich auf diese Art und Weise keine Vererbung in Bezug mit WPF gestallten?

Ich hoffe Ihr könnt mir helfen.

MfG.

04.02.2022 - 01:27 Uhr

Hallo jogibear9988, ja genau sowas habe ich gesucht, Danke und ebenso Danke an Th69, das Thema Key Frames ist sehr interessant.

MfG.

01.02.2022 - 17:00 Uhr

Mit kurven massig meine ich, ein anstieg der Bewegungsgeschwindigkeit der einer Kurve ähnelt.

01.02.2022 - 16:35 Uhr

Hallo und Grüße an die Gemeinde,

Ich habe eine frage im Bezug auf Animationen:

Gibt eine Möglichkeit eine Animation Kufen massig zu gestallten?

Nach meiner Auffassung läuft meine Animation Linea, mit einer konstanten Geschwindigkeit ab:


 private void SipAni(UserControl E, EventHandler evh)
 {
            var a = new DoubleAnimation
            {
                From = E.Height,
                To = 0.0,
                FillBehavior = FillBehavior.Stop,
                BeginTime = TimeSpan.FromSeconds(0),
                Duration = new Duration(TimeSpan.FromSeconds(0.2))
            };
            var storyboard = new Storyboard();
            storyboard.Children.Add(a);
            Storyboard.SetTarget(a, E);
            Storyboard.SetTargetProperty(a, new PropertyPath("Height", 0));
            storyboard.Completed += delegate { E.Visibility = Visibility.Hidden; };
            storyboard.Completed += evh;
            storyboard.Begin();
}

Ich will versuche die Geschwindigkeit konkav ansteigen zu lassen um ein dynamisches verhalten zu erzeugen.

Habt ihr eine Idee wie man dies reichen kann?

Mit freundlichen Grüßen.

07.01.2022 - 18:47 Uhr

Hallo Th69, ich danke dir für die Information.

Ich werde es nutzen.

MfG.

05.01.2022 - 18:08 Uhr

Hallo und Frohes Neues.

Ich wollte mal die WPF Experten fragen wie man folgendes am besten realisieren könnte :

Ich arbeite derzeit an einer Stapelansicht welche verschiedene Elemente von oben nach unten aufreiht.
Je nach dem ob ein Element gelöscht oder hinzugefügt werden soll, schiebt es sich rein oder raus. Je nach dem welches Element sich rausschiebt müssen die anderen, welche sich darunter befinden befinden, nachrutschen. Eine Verbildlichung befindet sich im Anhang.

Derzeit benutze ich eine Grid Viwe dazu und es fühlt sich sehr unelegant an.
Zumal man dem Element auch eine RowDefinition anlegen muss.
Eine Animation fürs ein und aus schieben gelang mir recht gut aber eine Animation fürs nachrutschen nicht.

Daher würde ich gern wissen, wie Ihr an sowas herangehen würdet und was ihr verwendet.

MfG.

PS:
Ich bin Backend Entwickler daher habe ich nicht so viel Erfahrung mit WPF, also kreuzigt mich nicht. 😁

06.09.2021 - 21:54 Uhr

Danke für die Antwort.

Ich werde es so bald wie möglich ausprobieren.

Aber ja lol, warum bekam ich dies nicht als Suchergebnis, als ich nach einer Lösung suchte. 😭

MfG

05.09.2021 - 19:52 Uhr

Grüße,

Ich habe eine kleine Frage:

Wie kann ich über SendKeys.SendWait einen Text mit ^ Senden z.b. "0x1F^0xFF".

Ich habe es mit "{^}" versucht aber es kam "0x1F&0xFF" dabei heraus.

Kein Plan warum.

Ich hoffe ihr könnt mir helfen.

MfG

23.03.2021 - 08:28 Uhr

Seid gegrüßt liebe Kollegen,

Ich arbeite derzeit an einer Anwendung welche Prozesse automatisiert, die in Verbringung mit Jira stehen.

Um mit Jira zu Kommunizieren benutze ich die Atlassian.SDK von Federico Silva Armas.

Die Anmeldung läuft bei dem Jira Portal automatisch über ein User Zertifikat, welches im Betriebssystem hinterlegt wurde.

Meine Frage ist, was muss ich machen, dass meine Anwendung sich genauso anmeldet?

Leider ist mir nicht bekannt wie sich diese Art der Anmeldung nennt.

Ich hoffe ihr wisst mehr darüber.

Mit freundlichen Grüßen.

02.07.2020 - 10:36 Uhr

Danke für die Antwort.

Ich denke gerade: ich fresse ein Besen.

Das mir das patu nicht aufgefallen ist.

Es hat geholfen!

Danke.

Mit freudlichen Grüßen.

02.07.2020 - 10:04 Uhr

Hallo zusammen,

Ich habe mal wieder ein Problem.

Ich versuch aus einem String folgende Zeichenfolgen Zeichen auszulesen:

","
Zahl,Zahl
",Zahl
Zahl,"

Hierzu habe ich folgendes Regex erstellt:


[0-9],[0-9]|['],[']|['],[0 - 9]|[0 - 9],[']

Mein Problem ist das es in C# nicht ganz funktioniert.

Im Testester funktioniert er Komplet.

Mein Test String: 'Hase',2000,'has',40,'Alf','Alf',23,40

Mein Code zerteilt dann den String beim Komma.

Aus irgend einem Grund funktioniert aber dieser Part aber nicht: ['],[0 - 9].

Ich weiß leider nicht weiter, ich hoffe ihr wisst da mehr.

Mit freudlichen Grüßen.

02.07.2020 - 09:10 Uhr

Ich bedanke mich für eure Hilfe.
Ich werde euren Rat befolgen und ein Parser benutzen.
Mit freundlichen Grüßen.

02.06.2020 - 15:03 Uhr

Hallo Kollegen,

Ich habe folgendes Problem:

Ich arbeite an einem Programm das bestimmte variablen aus einem C# Script ersetzt.

Hierzu versuche ich ein Regex zu schreiben, welches mir die Wörter filtert.

Leider bin ich ein Anfänger in Regex und habe Schwierigkeiten da durch zu steigen.

ich versuche mich schon eine weile daran, aber bisher hat der einfachste filter hierfür nicht funktioniert.

Folgende Anforderung habe ich an den Filter:

  1. Das gesuchte Wort darf nicht in einem Kommentar block stehen (// oder /* */).
  2. Das gesuchte Wort darf nicht in einem Feld aus Anführungszeichen stehen ("...").
  3. Das Wort darf sich nicht innerhalb eines Wortes befinden und es dürfen nur Sonderzeichen am Wort angrenzen und keine Zahlen oder Buchstaben.
  4. Auf Groß- und Kleinschreibung ist zu achten.

Mein erster Versuch beschäftigte sich nur mit der 1. Anforderung, leider gelang es mir bisher nicht das gewünschte Resultat zu erzielen:


(?(?=(?![\/]))\bHase\b)

Das Wort "Hase" sollte dabei aus diesem Text heraus gefiltert werden:

Der Hase hüpft herum. // Nur der Hase ganz allein.
// Vor Regen hatte der Hase keine Angst!

Das Resultat sollte der erste Hase im ersten Satz sein, der heraus gefiltert werden sollte.

Ich hoffe einer kann mir hier bei helfen.

Mit freundlichen Grüßen

FrankenDerStein

07.04.2020 - 22:31 Uhr

Hallo Kollegen,

Ich habe mal eine Frage. ich will über C# einen runden Button mit einem Button X in der Mitte erstellen.
Mein versuch dies zu erreichen sah so aus:


            Button close = new Button();
            close.Background = new SolidColorBrush(Colors.Transparent);
            close.VerticalContentAlignment = VerticalAlignment.Center;
            close.HorizontalContentAlignment = HorizontalAlignment.Center;
            close.Content = "x";
            close.Click += delegate (object sender, RoutedEventArgs e)
            {
                tabControl.Items.Remove(tab);
            };
            Style buttonStyle = new Style(typeof(Button));
            buttonStyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.DarkGray)));
            buttonStyle.Setters.Add(new Setter(ForegroundProperty, new SolidColorBrush(Colors.Black)));
            buttonStyle.Setters.Add(new Setter(FontSizeProperty, new FontSizeConverter().ConvertFromString("10")));
            ControlTemplate ControlTemp = new ControlTemplate(typeof(Button));
            FrameworkElementFactory FEF = new FrameworkElementFactory(typeof(Border));
            FEF.SetValue(Border.CornerRadiusProperty, new CornerRadius(5));
            ControlTemp.VisualTree = FEF;
            buttonStyle.Setters.Add(new Setter(TemplateProperty, ControlTemp));
            close.Style = buttonStyle;

Leider weis ich nicht warum es nicht Funktioniert.

Falls die Frage kommt warum ich es nicht in XAML mache. Dieser Button wird mit anderen Komponenten Dynamisch erstellt und hinzugefügt.

Ich hoffe jemand hat eine Idee warum.

Mit freundlichen Grüßen FrankenDerStein.

18.01.2020 - 14:30 Uhr

Ok in Unternehmens Umgebung ist ehh alles anders. Im Privatbereich sieht es da anders aus.

Meine Idee ist es eigentlich bereits existierende verfahren in Windows zu implementieren, wie die 2 Faktor Authentifizierung oder ähnliches zu zuzüglich einer Hardware wie z.b. Handy.

Was daran falsch?

Und was taugt die Windows Anmeldung, wenn durch ein simplen Boot-Stick einfach umgangen werden kann.

Ebenso kann mein Service mit einem Passwort Manager verglichen werden, also was spricht dagegen?

Mit freundlichen Grüßen,

FrankenDerStein.

18.01.2020 - 13:12 Uhr

Ich muss sagen, dass ich diese einwende nicht verstehe.

Theoretisch wäre es keine Sicherheitsproblem. Der Rechner kann ja jetzt auch schon sich automatisch anmelden, warum dann nicht mit einem Handy verknüpfen der z.b. ein Fingerabdrucksensor bereitstellt. Durch Verschlüsselung und anderen Sicherheitsmechanismen kann doch weiterhin die Sicherheit gewährleistet werden oder?

Mit freundlichen Grüßen,

FrankenDerStein.

18.01.2020 - 12:15 Uhr

Meine Idee ist es die Anmeldung an andere Bedingungen oder Faktoren zuknüpfen, womit die Anmeldung angenehmer werden kann.

18.01.2020 - 03:54 Uhr

Hallo liebe Kollegen,

Mir ist seit kurzem eine Frage in den Kopf gekommen die mich einfach nicht loslassen will.

Die Frage lautet: Ist es möglich ein Service zu schreiben der die Windows Anmeldung übernimmt?

Ich beziehe mich auf eine Anmeldung per Benutzername und Passwort.

Wie wäre sowas umzusetzen und gibt es Schnittstellen hierfür?

Weiss jemand darüber etwas?

Mit freundlichen Grüßen,

FrankenDerStein.

24.10.2019 - 20:58 Uhr

Ich habe das Problem gelöst, es war die Hintergrundfarbe. Diese musste auf ein Grid drüber verschieben, dann ging es.

Danke für die Hilfe.

13.10.2019 - 21:49 Uhr

Ich habe deine Lösung 1:1 übernommen. Ich habe ansonsten nichts am Code geändert.

<UserControl x:Class="Communication.Windows.Items.Device"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Communication.Windows.Items"
             xmlns:gif="https://github.com/XamlAnimatedGif/XamlAnimatedGif"
             xmlns:fa="http://schemas.fontawesome.io/icons/"
             mc:Ignorable="d" 
             d:DesignHeight="72.803" Height="72.803" d:DesignWidth="669.25" Margin="5" >
    <Grid Background="#FF404040">
        <Grid Loaded="IsLoaded">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto"></ColumnDefinition>
                <ColumnDefinition Width="auto"></ColumnDefinition>
                <ColumnDefinition Width="auto"></ColumnDefinition>
                <ColumnDefinition ></ColumnDefinition>
                <ColumnDefinition Width="auto"></ColumnDefinition>
                <ColumnDefinition Width="auto"></ColumnDefinition>
                <ColumnDefinition Width="auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <Image MaxWidth="80" MaxHeight="80" x:Name="image" HorizontalAlignment="Left"  Margin="10,10,0,10" VerticalAlignment="Top" Source="pack://siteoforigin:,,,/Resources/34100.png"  Grid.Row="0"/>
            <Grid Grid.Column="1">
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="auto"></RowDefinition>
                </Grid.RowDefinitions>
                <Label x:Name="nameLabel" Content="Name :" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Height="24" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="0"/>
                <Label x:Name="IPLabel" Content="IP :" HorizontalAlignment="Left"  VerticalAlignment="Top" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="1"/>
            </Grid>
            <Grid Grid.Column="2">
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="auto"/>
                </Grid.RowDefinitions>
                <Label x:Name="NameValueLabel" Content="xxx" HorizontalAlignment="Left" Margin="0,10,0,0" VerticalAlignment="Top" Height="24" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="0"/>
                <Label x:Name="IPValueLabel" Content="192.168.178.14" HorizontalAlignment="Left"  VerticalAlignment="Top" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="1"/>
            </Grid>
            <Grid Grid.Column="4" HorizontalAlignment="Right">
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="auto"/>
                </Grid.RowDefinitions>
                <Label x:Name="PingLabel" Content="Ping :" Margin="0,10,0,0" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
            </Grid>
            <Grid Grid.Column="5" HorizontalAlignment="Right">
                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"/>
                    <RowDefinition Height="auto"/>
                </Grid.RowDefinitions>
                <Label x:Name="PingValueLabel"  Margin="0,10,0,0" FontStyle="Normal" FontSize="15" FontFamily="Calibri" Foreground="DarkGray" Grid.Row="0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
            </Grid>
            <Border Grid.Column="6" HorizontalAlignment="Right" BorderBrush="Black" BorderThickness="1,0,0,0">
                <Border.Style>
                    <Style TargetType="Border">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=IsMouseOver}" Value="True" >
                                <Setter Property="Background" Value="Blue" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
                <Grid Width="15" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="48*"/>
                        <RowDefinition Height="25*"/>
                    </Grid.RowDefinitions>
                    <fa:ImageAwesome Icon="AngleRight"  Width="10" Height="10" Foreground="DarkGray" Margin="2,32,3,5.823" />
                </Grid>
            </Border>

        </Grid>
        
        <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
            <fa:ImageAwesome Icon="Gear" Spin="True" Width="50" Height="50" Name="loading" Foreground="DarkGray" />
        </Grid>
    </Grid> 
</UserControl>

Ich verstehe es daher auch nicht.

Deine Logik ist für mich eigentlich sehr einleuchtend.

Mit freundlichen Grüßen, FrankeDerStein.

10.10.2019 - 23:46 Uhr

Danke für die Antwort und Entschuldigung für die Wartezeit.

Es funktioniert fast so wie ich es gern hätte aber leider färbt er die gewünschte stelle nur ein, wenn der Messzeiger über irgendein Schriftzug oder Bild bewegt.

Also nicht überall auf dem Element.

Mit freundlichen Grüßen, FrankenDerStein.