Laden...

Forenbeiträge von habib Ingesamt 24 Beiträge

12.10.2020 - 09:16 Uhr

Irgendwie kann ich nicht verstehen wie genau du das meinst.

An die StackPanels binde ich ein neues ViewModel? Und in diesem verarbeite ich dann die Daten des Hyperlinks? Aber wie bekomme ich die Daten aus dem HauptViewModel ohne CommandParamter rüber an das neue ViewModel?

11.10.2020 - 14:43 Uhr

Sollte ich für jedes Hyperlink ein eigenes ViewModel nehmen, dann hätte ich 6 Stück. nur für die Hyperlinks. Ansonsten hat meine Anwendung nur noch einen Button der das ganze speichert

Irgendwie habe ich das Gefühl, das hier das MVVM immens mehr Code hervorruft, als wenn ich alles gleich in der Code Behind geschrieben hätte.

Edit:
Oder geht es vlt. auch anders.
Ich möchte auswerten welcher TextBlock gelickt wurde, um entsprechend eine andere Information ausgeben zu lassen. Es soll in einer MessageBox stehen was kopiert wurde. Also der Text des Labels oder des TextBlocks. So könnte ich im ModelView entscheiden welchen Text ich aufgrund des geklickten ausgeben lasse.

10.10.2020 - 23:24 Uhr

Ich würde gern dem Command noch zusätzlich den Label Content mitgeben, aber wie?
Multibinding scheint mit Hyperlink nicht gehen.


       <StackPanel Grid.Column="0" Grid.Row="4">
            <Label Content="TeamViewer-ID" />
            <TextBlock>
                <Hyperlink Command="{Binding CopyCommand}" CommandParameter="{Binding TeammViewerText}">
                    <TextBlock Text="{Binding TeammViewerText}" />
                </Hyperlink>
            </TextBlock>
        </StackPanel>

Besten Dank

10.10.2020 - 22:44 Uhr

Mich würde mal interessieren, wie macht ihr das mit den Versionsnummern eurer Software welche ihr veröffentlicht?

Zählt ihr diese immer hoch oder läuft das bei Euch automatisch ab? Wenn ja, wie?

Nach welchen Regeln setzt ihr die Versionsnummern?

01.10.2020 - 16:53 Uhr

Bin gerade dabei Commands durchzuarbeiten.

Danke für den Tipp mit dem Feedback geben.

Man braucht bei WPF nur in ganz gewissen Fällen Events.

Welche wären das?

Wenn ich nur ein Click Event habe, wäre es da nicht günstiger das ganze über Eventhandler zu machen? Ist am Ende ja nur ein kleines Tool.

01.10.2020 - 16:05 Uhr

Windows Presentation Foundation: Das umfassende Handbuch zur WPF, aktuell zu .NET Core 3.0
von Thomas Claudius Huber.

Hab mal einen Screen angefügt.

01.10.2020 - 15:36 Uhr

Nein, bei WPF arbeitet man mit MVVM und damit respektive mit Commands.

>

Habe jetzt einiges an Tutorials gelesen und Videos gesehen. Aber immer werden Eventhandler genutzt. Irgendwie bin ich nun verunsichert. Selbst im WPF Buch habe ich dies gelesen.

30.09.2020 - 19:46 Uhr

Werde mich mal weiter belesen.

Eine Frage hätte ich noch. Der Text wird ja nun in die Zwischenablage kopiert, zeitgleich sollte nun in der Statuszeile ein "kopiert" erscheinen.

Kann ich das in der Execute Methode mitgeben? Also das ich in der MainWindow.cs Datei eine Methode erstelle:

 

private void OutputStatus() 
      {

            statusbar.text = "kopiert";     
        }



Und dann im Execute aufrufen? Oder gibt es hierfür auch einen anderen Weg in WPF?

30.09.2020 - 17:16 Uhr

Danke, damit hat es nun funktioniert.

Allerdings steige ich noch nicht genau durch, wie und was. Könntest du mir bitte ein Tutorial empfehlen welches sich mit dieser speziellen Thematik beschäftigt?

29.09.2020 - 22:51 Uhr

Auf Anraten erstelle ich ein neues Thema.
Ich möchte bei 7 Textboxen den Inhalt bei Klick darauf in die Zwischenablage kopieren.
Dafür habe ich nun alle Textboxen mit Hyperlink verschachtel, die jetzt alle so aussehen.


<TextBlock Focusable="True">
      <Hyperlink Focusable="True" Command="ApplicationCommands.Copy" >
              <TextBlock Name="tb_teamViewerID" Focusable="True" />
      </Hyperlink>
</TextBlock>

Ich weiß, dass ich noch einen Denkfehler habe, allerdings komme ich nicht darauf wo dieser liegt.

29.09.2020 - 15:03 Uhr

Danke das war der Fehler gewesen.
Allerdings bin ich zu doof, wie kann ich jetzt auswählen was kopiert werden soll wenn man darauf klickt?

29.09.2020 - 14:16 Uhr

Und wenn ich dies genau so machen, bekomme ich folgende Meldung zurückgeworfen:

XDG0008	"ApplicationCommand" wird in einem Windows Presentation Foundation (WPF)-Projekt nicht unterstützt.
29.09.2020 - 13:08 Uhr

Und genau da liegt mein Problem, das ich nicht weis wie und was. Gibt es dafür auch einen FAQ Artikel?

Gibt es noch eine Möglichkeit das ganze so zu machen, dass alle TextBlock diese Methode haben?

29.09.2020 - 10:29 Uhr

Außerdem gibt es in WPF für diesen Zweck bereits den
>
.

Habe das mal folgendermaßen eingebunden:


<TextBlock>
    <Hyperlink NavigateUri="ApplicationCommand.Copy" >
        <TextBlock Name="tb_NameBox" />
    </Hyperlink>
</TextBlock>

Der Text in der Box wird zwar wie ein Link angezeigt, allerdings wird nichts kopiert.

22.09.2020 - 16:39 Uhr

Habe einen TextBlock und möchte beim Klick darauf (egal ob mit Maus oder Tastatur) ein Ereignis ausgelöst haben. Wäre auch schön, wenn der Mauszeiger sich als Hand verwandeln könnte wenn man darüber fährt.

Die Frage: Wie gehe ich im besten Fall vor.

Jeweils ein MouseDown und KeyDown Event erstellen wo die Methode aufgerufen wird?
G
Oder ist eine TextBox dafür besser geeignet?

21.09.2020 - 13:54 Uhr

Was Du mit dem Satz

a bekomme ich als einzigen Dienst bei Webroot
ausdrücken willst, ist mir aber unklar.

Damit wollte ich sagen, das nur der Dienst: Webroot bei Virustotal etwas anzeigt. Die restlichen Scanner gaben grünes Licht.

Hm, hab jetzt mal MalwareBytes drüber laufen lassen über mein System, nichts.

Habe hier mal den Code angefügt, vlt. kann ja mal wer darüber schauen und findet was.

 public partial class MainWindow : Window
    {
        public MainWindow()
        {

            InitializeComponent();
            CenterWindowOnScreen();

            // Poduct Key

            // Client Name
            tb_clientName.Text = Registry.GetValue(@"HKEY_CURRENT_USER\Volatile Environment", "USERDOMAIN", null).ToString();

            // Mac Adress
            tb_macAdress.Text = GetMac();

            // TeamViewerID
            tb_teamViewerID.Text = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer", "ClientID", null).ToString();


        }


        // Ermittelt die Mac Adresse
        private string GetMac()
        {
            string macAdress = "";
            NetworkInterface[] NetworkAdapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in NetworkAdapters)
            {

                if (adapter.OperationalStatus.ToString().Equals("Up"))
                {
                    if (adapter.NetworkInterfaceType.ToString().Equals("Ethernet"))
                    {
                        macAdress = adapter.GetPhysicalAddress().ToString();
                        macAdress = InsertStringAtPosition(macAdress, "-", 2);
                        break;
                    }

                }
                else
                {
                    macAdress = "Keine Mac Adresse gefunden!";

                }


            }

            return macAdress;
        }


        // Fügt in einem String Zeichenketten an bestimmter Position ein
        private string InsertStringAtPosition(string origialString, string replaceString, int position)
        {
            int interator = position + replaceString.Length;
            for (int i = position; i < origialString.Length; i += interator)
            {
                origialString = origialString.Insert(i, replaceString);
            }
            return origialString;
        }


        private void CenterWindowOnScreen()
        {
            double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
            double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
            double windowWidth = this.Width;
            double windowHeight = this.Height;
            this.Left = (screenWidth / 2) - (windowWidth / 2);
            this.Top = (screenHeight / 2) - (windowHeight / 2);
        }



    }
21.09.2020 - 12:24 Uhr

Habe heute mal meine *.exe aus dem Debug Ordner auf mehreren Rechnern getestet.
Nur ein Rechner öffnete die Datei nicht da er dachte, dass ein Virus darauf ist.

Daraufhin das ganze mal bei Virustotal.com hochgeladen und da bekomme ich als einzigen Dienst bei Webroot die Meldung: "W32.Rogueware"

Jetzt bin ich ein wenig verunsichert und weis nicht so recht wie ich dem Ding beikommen soll.

18.09.2020 - 15:57 Uhr

Danke, genau was ich gesucht hatte.

18.09.2020 - 14:09 Uhr

Über Ressourcen habe ich dem StackPanel, den Label und den TextBlock jeweils eigene Styles übergeben.

Ich würde allerdings gern nur die Labels und TextBlocks welche sich in einem StackPanel befinden dem Wert zuweisen und allen anderen Labels außerhalb sollen andere Styles bekommen.

17.09.2020 - 15:09 Uhr

Ok, das habe ich nun auch verstanden.

Das hieße also, bei kleinen Tools (so wie mein Kollege eins geschrieben hat) komme ich besser (kleinere Dateigröße) wenn ich WinForms verwende? Oder sehe ich das jetzt falsch?

17.09.2020 - 14:54 Uhr

Habe das ganze nochmal als Release veröffentlicht und erneut 180 MB erhalten.
Irgendwie will das ganze nicht in meinen Kopf warum eine einfach GUI Anwendung, die noch nichts macht, so groß wird. Ok, verstanden habe ich das sie die gesamte Runtime mit innehat und somit so groß wird.

Ein Kollege von mir hat ein Tool in Delphi geschrieben und das ist gerade einmal 4 MB groß. Als Vergleich habe ich nur mal die GUI nachgebaut und komme allein da schon auf 120 MB? Und ich habe auf meinem System kein Delphi installiert, daher muss da ja auch alles mitkommen. Kann mir das bitte jemand erklären?

17.09.2020 - 14:24 Uhr

.NET Framework ist angekündigt und erfordert genauso wie .NET Core die Runtime auf Windows.

Verstehe ich nicht, was meinst du damit?

Habe jetzt gelesen das die .Net Runtime 4.8... Standardmäßig mit installiert wird bei Windows 10. Also kann ich dies als vorausgesetzt ansehen. Außer das ich die neuen Dinge von .Net Core nicht nutzen kann, dürfte es doch keine Probleme geben?

17.09.2020 - 14:09 Uhr

Den ersten Link hatte ich schon gefunden, trotzdem danke.

Aber gerade wenn ich nur ein kleines Tool haben möchte dann finde ich 180 MB ein bisschen arg viel.

Gerade kam mir ein Einfall und ich habe das ganze nochmals mit .Net Framework 4.7... neu geschrieben und das ganze als *.exe aus dem Debug Ordner geholt. Diese ist nun nur 81 KB groß und läuft auf dem frisch installierten Windows.
Wäre dies auch ein Weg?

17.09.2020 - 13:08 Uhr

Rein aus Testzwecken habe ich nur eine kleine GUI unter WPF mit NetCore3.1 entwickelt. Bisher noch keine Logik eingebaut, nur rein das GUI.

Das Ganze habe ich als OnceClick veröffentlicht und bekam auch eine 181 Kb Datei heraus. Auf meinem System lief sie problemlos, allerdings auf einem frisch installierten Windows (da wo die Anwendung genutzt werden soll) bekam ich die Meldung das NetCore installiert sein muss.

Also das ganze nochmals neu kompiliert und unter Bereitstellungsmodus: Eigenständig angegeben. Damit ging es dann auch auf dem frischen Windows. Aber nun ist die Datei 180 MB groß. Dies finde ich ein bisschen arg groß. Wo mache ich einen Fehler, wo denke ich vlt. falsch? Oder wo hab ich vlt. einen Haken vergessen?