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 MarsStein
Thema: SelectedItem Binding bei dynamisch generiertem UserControl
Am im Forum: GUI: WPF und XAML

Hallo,

das kann so nicht funktionieren.
Du erstellst mehrere ItemsViewModel-Instanzen.
Eines davon ist ans MainWindow gebunden, die anderen jeweils an ein PathControl.

Wenn Du jetzt Deinen Button zum Wechseln des Index klickst, wirkt sich das nur auf den Index des UserControls aus, das ans MainWindow gebunden ist -> deshalb kannst Du in den UsderControls keine Veränderung sehen.
Was soll bei Deinem Code Deiner Meinung nach passieren, wenn Du den Button für das Wechseln des Index klickst, und bereits mehrere UserControls vorhanden sind? Wo genau soll dann gewechselt werden?

Die Vorgehensweise ist schon sehr obskur. Du solltest auf jeden Fall das MainViewModel für das MainWindow von den ItemViewModels trennen - und Dir dann überlegen, welche Funktionalität Du in welchem dieser ViewModels brauchst.

Beim Erstellen eines neuen UserControls solltest Du dann lediglich das ItemsViewModel erzeugen (nicht das Control selbst - das widerspricht MVVM, weil Dein ViewModel Teile der View kennt!) und es in die ObservableCollection packen.
Im ItemsControl des MainWindow legst Du dann ein ItemTemplate an, das Dein UserControl enthält. Such DIr dazu am besten ein paar Beispiele, die mit ItemTemplate arbeiten, es ist nicht sehr kompliziert.

Gruß, MarsStein

Thema: Wie beim WPF/Datagrid die Fläche der "oberen linken Ecke" formatieren?
Am im Forum: GUI: WPF und XAML

Hallo,

Zitat von Harry Lobster
Ich muss doch eigentlich in meinen DataGrid irgendwo den Style/Key angeben, oder ?
Eigentlich nicht... Du deklarierst diese Resource direkt als Kindelement von deinem DataGrid, dann sollte es passen:
<DataGrid ...>
    <DataGrid.Resources>
        <Style TargetType="Button" x:Key="{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}">
            <Setter Property="Background" Value="Red" />
        </Style>
    </DataGrid.Resources>
    <!-- Hier der Rest von Deinem DataGrid -->
</DataGrid>

Gruß, MarsStein

Thema: Punktfarbe der schon gesetzten Punkte darf sich nicht ändern.
Am im Forum: Grundlagen von C#

Hallo,

Du musst Dir halt für jeden Punkt merken, in welcher Farbe er gezeichnet werden soll - und zwar schon beim hinzufügen der Punkte.

Dafür eignet sich z.B. ein Dictionary<Point, Brush> oder ein Dictionary<Brush, List<Point>> statt der List<Point>.

Gruß, MarsStein

Thema: GUI in Web-Formular übertragen
Am im Forum: GUI: Windows-Forms

Hallo,

Zitat
Jedoch möchte ich das Browser-Element nicht in der Anwendung.
Möchtest das Element grundsätzlich nicht verwenden oder einfach nicht anzeigen?
Das Webbrowser-Element funktioniert nämlich auch, wenn es nicht angezeigt wird.

Gruß, MarsStein

Thema: Wie Klasse benachrichtigen, sobald sich Variable im ViewModel ändert?
Am im Forum: GUI: WPF und XAML

Hallo,

Zitat von CodeHamster
Mein Objekt wird nicht benachrichtigt.
Bist Du Dir da sicher? Hast Du versucht, den Wert nach der Änderung im MainViewModel aus der gebundenen Property in Bena mal abzurufen?
Zitat von CodeHamster
meine Debugging-Ausgaben kommen nicht.
Das ist jedenfalls nicht verwunderlich, denn über das Binding wird sicherlich nicht Dein Setter aufgerufen, sondern direkt die SetValue-Methode der DependencyProperty. Du kannst also nicht erwarten, dass die Ausgabe automatisch bei jeder Änderung kommt. Die kommt nur, wenn der Wert tatsächlich über Deinen Setter gesetzt wird.
Zitat von CodeHamster
oder eine bessere Idee wie ich das Binding zwischen MVM und meiner Custom-Klasse bewerkstelligen kann?
Ja. Das Gefrickel im CodeBehind sein lassen und das Binding in XAML umsetzen.
Zitat von MrSparkle
Davon abgesehen ist dort der falsche Ort für die Logik der View. Die gehört ins ViewModel.
Warum denn? Wenn Bena ein Control ist, an das er einen Wert aus dem ViewModel binden will, dann muss das doch da umgesetzt werden...

Gruß, MarsStein

Thema: Liste mit Wörtern erstellen, die mit ersten Zeichen der Suche übereinstimmen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

hinzu kommt noch, dass Du in Deiner Suche()-Methode eine neue Instanz von PrefixTree erstellst, auf der Du dann weiterarbeitest.
Diese Instanz kennt aber die in der Main-Methode hinzugefügten Wörter nicht...

Gruß, MarsStein

Thema: CollectionChanged --> verschachteln oder eigenständig?
Am im Forum: Grundlagen von C#

Hallo,

Zitat von Th69
denn bei EmployeeListView handelt es sich (wohl) nicht um das UI-Element (denn dieses hat ja gar kein CollectionChanged-Ereignis), sondern um die Collection
In der Tat, da habe ich mich wohl von der Benennung hinreissen lassen - Freitag Nachmittag, puh!

Das bedeutet, was ich bezüglich Views geschrieben habe, trifft hier nicht zu, wir sind die ganze Zeit auf ViewModel-Ebene.

Trotzdem halte ich den Ansatz, über das CollectionChanged-Ereignis zu gehen, aus den ebenfalls genannten Gründen für den falschen Weg.

Gruß, MarsStein

Thema: CollectionChanged --> verschachteln oder eigenständig?
Am im Forum: Grundlagen von C#

Hallo,

auf jeden Fall Möglichkeit a.)
Und zwar in umgekehrter Reihenfolge: Erst löschst Du das Objekt aus der Datenbank (über ein entsprechedes Datenlayer), und erst wenn das funktioniert hat aus der ObservableCollection im ViewModel. Dann kannst Du auch noch Fehlerbehandlung machen, wenn das Löschen aus der DB schiefgeht, und das Objekt ist in der UI noch vorhanden.

Möglichkeit b.) ist ein völlig falscher Ansatz.
Wenn ein solcher Code

EmployeeListView.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler
(CollectionChangedMethod);
im ViewModel auftaucht, bedeutet das, dass das ViewModel die View kennt und das sollte es nie.

Wenn der Code im CodeBehind steht, verlagerst Du Deine Löschlogik direkt unter Umgehung des ViewModels in die View - und das ist dann auf jeden Fall ein Designfehler.

Auf dieser Grundlage sind dann auch die Aussagen
Zitat von Abt
In MVVM arbeitet man aber nicht mit Code Behind Eventhandling
Zitat von Abt
Das Control gehört da nicht in Dein ViewModel.
hoffentlich verständlich, denn bei dem Ansatz über CollectionChanged trifft auf jeden Fall einer dieser Umstände zu.

Gruß, MarsStein

Thema: Wie kann man Sub Objekte über einen Globalen Trigger einfärben?
Am im Forum: GUI: WPF und XAML

Hallo,

Machst Du mittlerweile irgendwas anders, oder spielst Du noch im CodeBehind oder sonstwo mit den Mausereignissen rum?
Ansonsten sollte es eigentlich mit meinem Vorschlag funktionieren.

Ich hatte das mehr oder weniger 1:1 mit Deinem Code getestet und nur den Style entsprechend verschoben und angepasst und den fa-Namespace und die zugehörigen Elemente rausgeschmissen, an der Struktur aber sonst nichts geändert. Dabei ergab sich das von Dir beschriebene gewünschte Verhalten.

Gruß, MarsStein

Thema: [VS]: Win-Form-Bibliothek anlegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

einfach nur eine Klassenbibliothek.
Um using System.Windows.Forms nutzen zu können, musst Du dann noch einen Verweis (Referenz) auf die System.Windows.Forms.dll erstellen.

Gruß, MarsStein

Thema: Wie kann ich eine Klasse als Methoden-Parameter in Methode übergeben?
Am im Forum: Grundlagen von C#

Hallo,

Zitat von Th69
Und auch die Einschränkung "class" ist bei Angabe eines Interfaces überflüssig, denn Interfaces funktionieren generell nur bei Klassen (nicht bei Strukturen).
Nur zur Richtigstellung: Das stimmt nicht. Auch Strukturen können Interfaces implementieren, und dann auch in auf diese Interfaces eingeschränkten Generics benutzt werden.

Gruß, MarsStein

Thema: Schleife nach bestimmter Zeit erneut ausführen
Am im Forum: Grundlagen von C#

Hallo,

siehe auch [Tutorial] Konfigurationsmodell im .NET Framework

und beachte zukünftig [Hinweis] Wie poste ich richtig? Punkt 1.2

Gruß, MarsStein

Thema: Wie kann man Sub Objekte über einen Globalen Trigger einfärben?
Am im Forum: GUI: WPF und XAML

Hallo,

so rum geht's nicht, das musst Du genau andersrum machen.
Sprich, die Border (dein Target) bekommt den Style und reagiert per DataTrigger auf das MouseOver des Elternelements:

<Border Grid.Column="6" HorizontalAlignment="Right" BorderBrush="Black" BorderThickness="1,0,0,0" x:Name="XXX">
    <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" >
        <fa:ImageAwesome Icon="AngleRight"  Width="10" Height="10" Foreground="DarkGray" />
    </Grid>
</Border>

Gruß, MarsStein

Thema: Microsoft Cloud Deutschland nicht mehr für Neukunden verfügbar
Am im Forum: Szenenews

Hallo zusammen,

es gibt einen neuen Anlauf, wenn auch unter etwas anderer Prämisse:
https://t3n.de/news/neuauflage-deutschen-cloud-neue-1192412/

Gruß, MarsStein

Thema: Funktionsaufruf über Verschachtelte Controls
Am im Forum: GUI: Windows-Forms

Hallo,

innerhalb der Controls-Auflistung eines übergeordneten Elements sind Deine Objekte nur als Control bekannt, und da gibt es die Methode UpdateStatus eben nicht.

Wie Th69 schon angedeutet hat, musst Du das dann auf Deinen Typen zurück casten.

Gruß, MarsStein

Thema: [Gelöst] - MVVM - SelectedItem für ItemsSource setzen (Memory Problem)
Am im Forum: GUI: WPF und XAML

Hallo,

bist Du ganz sicher, dass das SelectedItem, dass Du initial setzen willst, die selbe Instanz ist, die auch in der ItemsSource der ComboBox steckt?

Wenn Du das Item z.B. zweimal aus den selben Daten generierst, einmal für die Nutzung als SelectedItem und einmal für die Verwendung in der ItemsSource, dann hättest Du nicht die selbe Instanz und dann ergäbe sich genau Deine Fehlerbeschreibung.

Gruß, MarsStein

Thema: Listbox Items auswählen und per Button_Click Ereignis starten
Am im Forum: GUI: WPF und XAML

Hallo,

und den Button dann auch nicht mit Click-Event im Code behind behandeln, sondern Command Binding benutzen und ein Command aus dem Viewmodel dran binden.
Dort ist dann wenn das SelectedItem richtig gebunden dasselbe schon bekannt und kann direkt verwendet werden.

Gruß, MarsStein

Thema: Hohe und lange Laufzeiten bei großen mehrdimensionalen Arrays
Am im Forum: Rund um die Programmierung

Hallo,

ich hab das gerade mal ausprobiert mit einem float[70,70,70], also 343000 Werten, die ich mit Zufallswerten befüllt habe.
--> dauert auf meiner Maschine hier 7 Millisekunden...

Ich vermute also, dass bei Dir eher das Besorgen der Werte so lange dauert. Wo kommen die denn her?

Gruß, MarsStein

Thema: RedirectStandardOutput DosShell unter W7 und neuer
Am im Forum: Grundlagen von C#

Hallo,

Zitat von Zerstreute
das keiner von Euch mir sagen kann warum mein Programm hängt sobald das externe Tool gestartet wurde

Eine Vermutung hätte ich schon anzubieten: das OutputDataReceived-Event wird nur ausgelöst, wenn das externe Programm eine vollständige Zeile inklusive Zeilenumbruch schreibt.
Vermutlich ist das nicht der Fall, dann müsstest Du selbst direkt auf dem StandardOutput-Stream lesen.

Gruß, MarsStein

Thema: Erben von Model3D (System.Windows.Media.Media3D)
Am im Forum: GUI: WPF und XAML

Hallo,

nein, das ist nicht möglich. Du kannst auch nicht von Objekten erben, die von Model3D abgeleitet sind. Die gesamte Vererbungshierarchie ist durch internal oder sealed geschützt.
Du kannst nur die vorhandenen Ableitungen von Model3D benutzen, aber nicht davon erben.

Gruß, MarsStein

Thema: Erben von Model3D (System.Windows.Media.Media3D)
Am im Forum: GUI: WPF und XAML

Hallo,

die Methoden sind in der abstrakten Klasse als internal abstract deklariert.
Du kannst also nicht direkt davon erben. Nur Klasen innerhalb der PresentationCore.dll können diese abstrakten Methoden implementieren.

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

Hallo Abt,

Zitat
Dann schau Dir mal an, was CloudFlare ist.
Ich weiss, was das ist. Ich habe ja auch nicht gesagt, dass Cloudflare mir was unterjubelt, sondern die besuchten Sites mir über Cloudflare was unterjubeln, während Ihre Grundfunktionalität witzigerweise meist auf der eigenen Domain verbleibt.

Aber egal scheint ja ohnehin irgendwie ein Geisterproblem gewesen zu sein.
Und ja, genau der RocketLoader war's!! das soll einer verstehen, wie der sich bei mir eingeschlichen hat...

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

@Palladin007,

danke für den Hinweisnauf uMatrix - werde ich mir mal ansehen (ich nuze immer noch NoScript).

Du hast übrigens Recht - jetzt sehe ich den Cloudflare-Eintragbauch nicht mehr. Vor einer Stunde war er aber noch da, und da hat der Beitragseditor halt nicht funktioniert. Am Cache kanns wohl nicht liegen, der wird bei mir immer geleert, und ich hatte das Prblm auch an verschiedenen Rechnern. Keine Ahnung was da los war. Es gab auchbim Seitenquelltext ein Script von Cloudflare mit "scrape-all-scripts-from-site" oder so ähnlich.

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

Hallo nochmal,

vielen Dank. Es funktioniert ja schon wieder ohne!

Zitat von Abt
Das ist ehrlich gesagt weniger ein Problem von CloudFlare oder MyCSharp.
Verwendest Du einen Scriptblocker, dann musst Du halt damit rechnen, dass was nicht funktioniert.
Ja, das ist schon klar. Die meistennSeiten funktionieren aber trotzdem weitestgehend, wenn man nur ihre eigenen Scripte erlaubt. Gerade Cloudflare taucht häufig auf, wird aber so gut wie nie wirklich benötigt.

Daher auch meine Frage - wenn ich nämlich Cloudflare generell erlaube, bekomme ich von alen möglichen Seiten Scripte untergejubelt, von denen ich nicht will, dass sie laufen, weil sie nicht nötig sind.

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

Hallo,

das Erstellen eines Themas halte ich schon für eine Kernfunktion eines Forums

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

Hallo Abt,

das bringt mir leider nichts. So schlau ist mein Scriptblocker nicht, dass ich Cloudflare nur im Kontext von MyCsharp erlauben könnte. Ich kann es erlauben oder eben nicht - das betrifft dann aber auch andere Sites.
Ich finde es ja OK, wenn statische Inhalte wie Bilder oder Attachments dahun ausgelagert werden.
Aber Scripte?!? Bedauerlich. Zumindest die Kernfunktionalität hätte ich auf dem MyCsharp-Server belassen.

Gruß, MarsStein

Thema: Beiträge schreiben und Cloudflare
Am im Forum: Wünsche und Kritik

Hallo,

mir ist aufgefallen, dass in letzter Zeit der gesamte Editor für Beiträge nicht mehr funktioniert, wenn ich Scripte von Cloudflare blockiere - noch nicht mal die Vorschau oder das Erstellen dieses Threads :(

Ist das wirklich nötig?

Gruß, MarsStein

Thema: ItemsControl: Template Datenbindung an Property ausserhalb der Source
Am im Forum: GUI: WPF und XAML

Hallo,

über RelativeSource FindAncestor fndest Du für gewöhnlich Controls, nicht aber die ViewModels.
Das ViewModel müsste aber als DataContext im Control (bei Dir: im Window, wenn Deine Bezeichnungen stimmen) zu finden sein.
Das Binding müsste also so aussehen (beachte den Path und den Ancestortype):

<Line Stroke="{Binding Path=DataContext.SternbildColor, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}"/>

Gruß, MarsStein

Thema: Wieso bleibt AcceptTcpClient beim TCP Listener hängen?
Am im Forum: Netzwerktechnologien

Hallo,

statt den Code irgendwo unbesehen herzukopieren, und sich dann wundern, dass es nicht 1:1 im eigenen Kontext funktioniert, könntest Du Dir erst mal [FAQ] TcpClient: einfaches Beispiel anschauen - nein, nicht nur anschauen, auch durchlesen - und versuchen, das dort Geschriebene zu verstehen.
Danach solltest Du ein Grundverständnis dafür haben, wie Netzwerkkommunikation funktioniert.

Gruß, MarsStein

Thema: Wie kann ein TCP Server mit mehreren Clients arbeiten?
Am im Forum: Netzwerktechnologien

Hallo,

ich stimme Abt zu. Wenn es um eine Produktivsoftware geht, bitte nicht selber auf TcpListener/TcpClient-Ebene anfangen. Bei allen heutigen Möglichkeiten eignet sich das wirklich nur als Lernthema, oder wenn man was in bestehenden Netzwerksystemen einbinden muss und daher keine anderen Möglichkeiten hat.

Dennoch: Die eigentliche Frage wird in [FAQ] TcpClient: einfaches Beispiel umfangreich behandelt.

Gruß, MarsStein