Laden...

Forenbeiträge von MrSparkle Ingesamt 5.658 Beiträge

03.03.2020 - 16:51 Uhr

Erstelle dir ein NewsViewModel mit den Eigenschaften Title, Description und Url, und leg dir eine Eigenschaft vom Typ ObservableCollection<NewsViewModel> im MainViewModel an. Diese Liste kannst du dann mit der Rückgabe des News-Clients befüllen und im XAML an ein ItemsControl binden, welches dir die Liste anzeigt.

Siehe dazu: [Artikel] MVVM und DataBinding

02.03.2020 - 16:54 Uhr

Nach was hast du denn gesucht? Das ist das erste Suchergebnis bei mir: How do I get an animated gif to work in WPF?

01.03.2020 - 22:06 Uhr

Hätte man das nicht wesentlich einfacher haben können? So etwa:


private List<Item> items = new List<Item>();

public IEnumerable<Item> FilteredItems { get; set; } = items;

public void ClearFilters()
{
  FilteredItems = items;
  PropertyChange(nameof(FilteredItems));
}

public void AddFilter(Func<Item,bool> filter)
{
  FilteredItems = FilteredItems.Where(filter);
  PropertyChange(nameof(FilteredItems));
}

Dann kannst du das Grid an die FilteredItems-Eigenschaft binden, und beliebig viele Filter hinzufügen, und die Ansicht wird automatisch aktualisiert.

Ich habe jetzt erst verstanden, was du meinst, jedenfalls glaube ich es. Aus deiner Frage geht nicht so richtig hervor, wobei du genau Schwierigkeiten hast. Bei der Erstellung der Benutzeroberfläche? Bei der Konfiguration des DataGrids? Bei der Logik? Beim DataBinding? Du mußt deine Fragen etwas konkreter formulieren.

Wie mit ComboBoxen DataGrid filtern?

Wie sollte ich geschickterweise konzeptionell vorgehen?

Das ist viel zu allgemein, und daher nicht so einfach zu beantworten. "Wie filtere ich die Daten meines DataGrids" hätte dir dagegen sicherlich jemand beantworten können.

01.03.2020 - 21:43 Uhr

erst in ein paar Tagen

Es muß doch irgendein Fehler kommen, wenn das Binding nicht funktioniert. Wenn etwas nicht funktioniert, kann man zielgerichtet danach suchen, siehe [Artikel] MVVM und DataBinding, Abschnitt Debugging

27.02.2020 - 17:30 Uhr

Tut mir echt leid, aber ich verstehe beim besten Willen nicht, worauf du hinaus willst. Und daß du noch keine Antwort bekommen hast, bedeutet wahrscheinlich, daß es anderen auch so geht.

Ein Template für Listen ist normalerweise eine Vorlage für die Darstellung eines Listen-Elements, wie z.B. ein ItemsTemplate in WPF. Und ein Favorit ist eine Art Lesezeichen oder Referenz auf ein bestimmtes Objekt. Was du jetzt mit "Technologie wird mit Favorit verbunden" meinst, und wie dabei RegEx ins Spiel kommen soll, mußt du mal genauer erklären.

Also, was genau hast du eigentlich vor? Geht es dir um einen Entwurf einer Benutzerschnittstelle? Oder geht es darum, Zeichenketten anhand von Pattern zu matchen? Oder hast du Schwierigkeiten mit dem Datenmodell? Oder mit der Verknüpfung mit der "Lieferanten-Entwicklungsumgebung"?

25.02.2020 - 00:15 Uhr

Meine Fragen nun:
Wie kann ich die zur Laufzeit erstellte TreeView in die Datenbank quetschen und wie kann ich diese dann wieder auslesen?

So, wie man andere Daten auch aus der DB liest bzw. dort speichert. Dazu solltest du im Code des Programmes im besten Fall irgendeine Abstraktion finden (Repositories, ORM o.ä.), die du dafür verwenden solltest.

Und wo verstecke ich im TreeView den Link zur passenden Page (onDoubleClick)?

Das hast du dir gerade selbst beantwortet: Im im DoubleClick-Ereignis des TreeViewItems.

Hier gibt es noch ein paar Tips zum Einstieg:
[Artikel] Drei-Schichten-Architektur
[Artikel] MVVM und DataBinding

Aber mal unter uns: Ich weiß ja nicht, wieviel Zeit du dafür hast. Aber den Umgang mit Datenbanken erlernen, einen Crashkurs in WPF machen, und sich dann noch in ein bestehendes Projekt einzuarbeiten, kann schon ein paar Monate Zeit in Anspruch nehmen. Jedenfalls, bevor man in der Lage wäre, Code für den Produktiveinsatz beizusteuern.

Daher wäre meine Empfehlung: Nutze die Zeit, um dich in die Software-Entwicklung einzuarbeiten, mach ein paar kleine Projekte, und arbeite dann mit den Entwicklern zusammen, wenn sie wieder zurück sind.

24.02.2020 - 23:58 Uhr

Du könntest dir einen eigenen ShaderEffect erstellen. Dazu mußt du aber einen PixelShader schreiben, ein Beispiel findest du in dem Link.

21.02.2020 - 15:04 Uhr

Wo speicherst du denn die Tickets? In einer Datenbank? Dann erzeugt die DB ja schon eine eindeutige ID, die du verwenden kannst.

Ansonsten hat Taipi88 ja schon einige Möglichkeiten genannt.

17.02.2020 - 19:22 Uhr

Ich habe zwei Tage zwischen vier und sechs Stunden nur Artikel gewälzt, die mich letzlich kaum weiterbrachten.

Warum? Wie hast du die Artikel ausgewählt, und welche Informationen haben dir dabei gefehlt?

ausnahmsweise ist der microsoft.com-Artikel wirklich gut

Wenn man einen neuen Framework oder ein neues Steuerelement ausprobieren will, dann ist die erste Anlaufstelle die Dokumentation dazu. Dort gibt es alles, was man zur Verwendung wissen muß. Wenn dann dort Begriffe stehen, die man nicht kennt, kann man gezielt danach suchen.

17.02.2020 - 19:11 Uhr

Gibt es hier vielleicht jemanden (oder mehrere) der/die mir bei der Lösung des Problems helfen kann/können und will/wollen?

Nun ja, das ist der Sinn eines Forums. Aber du muß schon erklären, wie wir dir weiterhelfen können. Geht es dir um die Beratung bezüglich Software oder Hardware, oder willst du die Software selbst umsetzen?

ich habe ein riesiges Problem, welches ich in großen Teilen nicht selbst lösen kann, da meine Erfahrung in C# leider nicht ausreicht.

Ich kann keine Frage bezüglich C# erkennen. Wo genau kommst du nicht weiter, und was hast du bereits probiert?

ich weiß nicht, ob ich hier in diesem Unterforum richtig bin, wenn nicht, könnte das ein Admin netterweise verschieben.

Das Forum "Projekte" gibt es für die "Vorstellung von eigenen Projekten zur freien Benutzung durch die Community, Suche nach Projektmitarbeitern für Community-Projekte". (Lizenzbedingungen für die Projekte / Spezielle Regeln für Projekte-Threads)

Ich hab das Thema ersteinmal in das Grundlagen-Forum verschoben, evtl. würde auch "Rund um die Programmierung" passen (wenn es um die Programmierung geht), oder "Smalltalk" (wenn es um die Beratung bezüglich Hardware bzw. Software geht).

Siehe auch [Hinweis] Wie poste ich richtig?

16.02.2020 - 17:22 Uhr

Du hast dort zwei Zuweisungen mit =, deshalb funktioniert es nicht. Probiere mal:

matr = A[i, j] * B[k, l];
14.02.2020 - 16:39 Uhr

Die automatische Aktualisierung der Ansicht bei Änderungen kann nur funktionieren, wenn dadurch das PropertyChanged-Ereignis ausgelöst wurde. Und u.a. genau zu diesem Zweck gibt es das ViewModel. Wenn du Bindings auf das Model setzt, oder in einem Command nur das Model (nicht aber das ViewModel) änderst, dann kann es nicht funktionieren.

Die Lösung ist dann aber nicht ein Aufruf von PropertyChange(String.Empty), sondern ein geeignetes ViewModel zu implementieren.

Im Prinzip muß das ViewModel den gesamten aktuellen Zustand der UI repräsentieren. Das Aktualisieren des Models passiert dann zu einem bestimmten Zeitpunkt (z.B. beim Klick auf "Speichern") völlig unabhängig davon.

14.02.2020 - 16:30 Uhr

10 Einträge, jeder sollte einer extra Column zugeordnet werden.

Was spricht dagegen, diese 10 Eigenschaften anstatt der Liste zum ViewModel hinzuzufügen?

14.02.2020 - 15:42 Uhr

innerhalb der Ansicht kann ich die Nummer ändern, dann werden auch die Daten aus dem Model aktualisiert

Die Ansicht ändert nur die Daten aus dem ViewModel. Das ViewModel wird dann erst (bei Bedarf) das Model ändern. Aber ohne Änderung im ViewModel funktioniert das DataBinding nicht.

Schau dir auch mal zur Veranschaulichung das Beispiel-Projekt in [Artikel] MVVM und DataBinding an.

14.02.2020 - 15:36 Uhr

@T-Virus: Beides sind die falschen Herangehensweisen unter WPF.

Th69 hat es richtig erklärt. Code-Beispiele und ein Beispiel-Projekt finden sich in dem verlinkten Artikel.

14.02.2020 - 15:34 Uhr

durch PropertyChange(String.Empty) löse ich ja nochmal alle Properties aus um die Ansicht zu aktualisieren

Warum sollte man das tun? Die Ansicht wird doch automatisch durch das DataBinding aktualisiert. Wenn nicht, dann hast du irgendwo einen Fehler gemacht.

29.01.2020 - 22:08 Uhr

Wo genau liegt das Problem? Was hast du bisher schon probiert?

Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 5

29.01.2020 - 21:58 Uhr

wie es diesen blöden Vector initialisieren kann. Der Vector ist von Autodesk (AutoCAD) und den muss ich leider auch nutzen.

Das Hauptproblem hier ist nicht der "blöde Vector" von Autodesk, sondern deine Software-Architektur. Datentypen aus einer externen API haben nichts in der DAL zu suchen.

Der richtige Weg wäre, einen eigenen Vektor-Datentyp zum Speichern zu verwenden, oder einfach die Koordinaten als drei Werte abzuspeichern. Dann werden auch keine redundanten Werte wie "Length" oder "LengthSqrd" mitgespeichert. Die Autodesk-Datentypen werden erst dann initialisiert, wenn die API verwendet wird.

Eine andere Möglichkeit wäre, die API zu verwenden, um deren Datentypen zu serialisieren, oder bspw. eine AutoCAD-Datei zu erstellen, und diese dann in der DB abzulegen.

Siehe dazu auch [Artikel] Drei-Schichten-Architektur

28.01.2020 - 10:14 Uhr

Was du eigentlich willst, ist, SkewTransform auf den Header und RotateTransform auf den Header-Text anzuwenden. Evtl. könnte es funktionieren, SkewTransform auf den Header und dann den entgegengesetzten SkewTransform + RotateTransform auf die Schrift anzuwenden.

Alternativ könntest du den gesamten Header oder auch nur die Schrift manuell in ein WriteableBitmap zu rendern, und dieses dann ausgeben. Aber dann müßtest du dich auch um die Klick-Ereignisse selbst kümmern.

Im Endeffekt ist es sicherlich ziemlich aufwendig, da das DataGrid im Framework dieses Feature nicht selbst unterstützt. Wahrscheinlich ist es aber besser, mal zu schauen, ob es nicht ein komerzielles Grid gibt, das diese Darstellungsform bereits unterstützt.

28.01.2020 - 09:56 Uhr

War zu viel Info, wa? 😄

Zu viel Text, zu wenig Information. Du mußt nicht jeden Gedankengang hier dokumentieren. Poste den relevanten Code und eine konkrete Frage, dann machst du es deinen Helfern leichter.
Siehe [Hinweis] Wie poste ich richtig?, Punkt 5

Wenn du eine neue Frage hast, erstelle ein neues Thema und poste den relevanten Code und eine konkrete Frage. So verliert man nicht den Überblick.
Siehe [Hinweis] Wie poste ich richtig?, Punkt 1.2

Dabei ist CurrentChapterItem ja genau jenes Property, das sich im DataContext von 'combo' befindet.

Das läßt sich von hier aus nicht sagen, weil nicht klar ist, wie dein Code jetzt aussieht. Aber du könntest es z.B. mit einem DebugConverter mit wenig Aufwand selbst überprüfen.

26.01.2020 - 20:15 Uhr

Das Binding mit ElementName bezieht sich auf ein Steuerelement in der View, an dessen Eigenschaften du binden kannst. Ansonsten bezieht sich das Binding auf den DataContext des Elements. In deinem Fall wäre ein einfacher Trigger (kein DataTrigger) die beste Lösung. Wobei mir trotz deines umfangreichen Textes nicht klar ist, was du eigentlich genau erreichen willst.

Wenn ein Binding nicht korrekt funktioniert, kannst du eine Fehlermeldung im Ausgabefenster finden, oder es selbst überprüfen, siehe Abschnitt Debugging in [Artikel] MVVM und DataBinding.

26.01.2020 - 15:39 Uhr

Vielleicht kann mir ja jemand auf die Sprünge helfen.

Was du suchst, sind DataTemplates.

25.01.2020 - 22:27 Uhr

{Binding} ohne Target-Property

Dann wird direkt auf den DataContext gebunden.

Also einen DataTrigger? Und den binde ich dann einfach zu meinem Property?

So in etwa:

<DataTrigger Binding="{Binding Path=State}" Value="{x:Static my:PathItemState.chapterEmpty }">

Zu den UserControls: In Windows Forms hat es immer Sinn ergeben, bestimmte Teile der Anwendung in eigene Controls zu kapseln. Aber in WPF gibt es Templates, die viel flexibler sind, und in den allermeisten Fällen ausreichen.

25.01.2020 - 19:36 Uhr

weil sich die Farbgebung für den Text nach einem enum im Property richten soll

Verwende dafür einfach einen Trigger in der View.

Was willst du mit diesem Code erreichen:

 public Color TheColor
        {
            get { return _color; }
            set
            {
                _color = Color.Red;
            }
        }

Soll es evtl. so aussehen:

 public Color TheColor { get { return Color.Red; } }

Und wozu brauchst du das UserControl eigentlich? Das braucht man wirklich nur, um Steuerelemente zu erstellen, die man in anderen Projekten wiederverwenden möchte, unabhängig von irgendwelchen ViewModels. Ansonsten reicht ein Template völlig aus.

25.01.2020 - 17:54 Uhr

Was du suchst, sind DataTemplates. Damit kannst du je nach Typ deines ViewModel eine andere View anzeigen lassen. In [Artikel] MVVM und DataBinding im Abschnitt 5. Templates gibt es ein Beispiel.

UserControls braucht man in WPF meistens nicht, außer man hat ein Steuerelement, das man in anderen Projekten wiederverwenden möchte.

20.01.2020 - 10:32 Uhr

Wenn der Benutzer einen Wert in der ComboBox auswählt, wird durch das Binding die Eigenschaft TheValue im ViewModel geändert. Wenn du dort im Setter auf die Änderung reagierst, brauchst du kein Event, kein Command und kein Package.

17.01.2020 - 09:49 Uhr

da es mit XAML irgendwie nicht laden wollte..

könnte sich wohl auch um einen Bug handeln, oder?

Angesichts deines bisher geposteten Codes würde ich erstmal nicht von einem Fehler bei Microsoft ausgehen. Aber mit "wollte irgendwie nicht" können wir halt auch nicht viel anfangen, um dir weiterzuhelfen.

Siehe auch [Hinweis] Wie poste ich richtig?, Punkt 5

17.01.2020 - 09:46 Uhr

Du solltest die Templates so aufbauen, wie auch dein ViewModel organisiert ist. D.h., der Login ist Teil des Players. Dann kannst du innerhalb des Player-Templates den Login-Teil ein- oder ausblenden, je nachdem, ob das Flag im ViewModel gesetzt ist.

16.01.2020 - 22:39 Uhr
<Setter Property="Background" Value="{StaticResource TxtDarkColor}"></Setter>

und

<Button Style="{StaticResource Test}"/>

mit Anführungszeichen!

Und

<Style x:Key="Test" TargetType="Button">

mit dem richtigen TargetType.

16.01.2020 - 17:30 Uhr

nur zwei kleine Probleme

Nach dem zu urteilen, was du dazu schreibst, ergeben sich die Probleme aus einer unsachgemäßen Herangehensweise, fehlerhaften Architektur, fehlender Planung und mangelnder Erfahrung. Diese Probleme jetzt oberflächlich zu beheben, wird lediglich weitere Probleme in der Zukunft verursachen.

Daher hier ein paar allgemeine Anmerkungen dazu.

Datenzugriff:

  • XML ist die denkbar schlechteste Variante, um diese Art von Daten zu speichern. Es müssen immer alle Datensätze gelesen und nach einer Änderung wieder gespeichert werden. Außerdem kann jeder (Unbefugte) Änderungen in einem Texteditor an den Daten vornehmen, ohne irgendwelche Spuren zu hinterlassen.

  • Auflistungen sollten auch als solche verwaltet werden, und im Datenmodell (das bei dir anscheinend komplett fehlt) auch als Auflistungen (Listen bzw. Arrays) organisiert sein.

Logik:

  • Änderungen an den Daten oder Neu-Initialisierungen sollten in der Logikschicht auf dem Datenmodell vorgenommen werden, und nicht in der Benutzeroberfläche auf den einzelnen Steuerelementen. Dann kannst du auch mit einer einfachen Schleife über die Elemente in einer Auflistung iterieren, und Eigenschaften initialisieren oder aktualisieren.

  • Nur dann kannst du die Logik überhaupt automatisiert testen, und damit sicherstellen, daß dein Programm überhaupt tut, was es tun soll, besonders nach weiteren Änderungen.

Benutzeroberfläche:

  • Benutze DataBinding, um dein Datenmodell an die Oberfläche zu binden. Dann mußt du nicht alles manuell updaten und dir dadurch weitere mögliche Fehlerquellen einhandeln.

  • Benutze Listenansichten oder DataGrids, um tabulare Daten anzuzeigen, und Detailansichten, um einzelne Datensätze zu ändern. Dann ergeben sich auch keine undefinierten Zustände, wo du nicht weißt, ob die Daten geändert wurden oder nicht.

Hier ein paar Links zur Einführung:
[Artikel] Drei-Schichten-Architektur
[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio
[Artikel] MVVM und DataBinding (am Ende gibt es einen Link zu DataBinding mit Windows Forms)

**Insgesamt hoffe ich, daß das nur ein Übungsprojekt ist, und nicht (niemals) im produktiven Einsatz befindlich ist! **Du hast keine Möglichkeit, die Datenintegrität zu garantieren, kannst Änderungen nicht verfolgen, und die Funktionialität ist komplett ungetestet, und kann aufgrund der fehlenden Architektur auch nicht getestet werden. Und bei dem, was dein Screenshot zeigt, handelt es sich offenbar um Daten, die zum einen extrem sensible persönliche Informationen darstellen, und von denen zum anderen offenbar die Gesundheit oder sogar das Leben von Menschen abhängt. Stell dir vor, die Diagnose oder die Allergien werden bei einer Änderung nicht abgespeichert, oder kommen durcheinander. Wer will die Verantwortung dafür übernehmen, wenn durch einen Fehler in deinem Programm jemand geschädigt wird?

10.01.2020 - 17:34 Uhr

Nein, kann man nicht. Und kannst du bitte zukünftig im richtigen Forum posten? Das sind doch wirklich Grundlagen, die man selbst in der Doku nachschlagen kann.

Eine abstrakte Klasse ist eine Klasse und ein Interface ist ein Interface. Ein Interface kann man implementieren, aber von einer Klasse kann man ableiten.

[FAQ] Wie finde ich den Einstieg in C#?
[Tipp] Schau in die Doku! - Möglichkeiten der Informationsgewinnung

09.01.2020 - 19:56 Uhr

Mit ExifLibNet kannst du nur die EXIF-Daten ändern. Hast du mal die beiden Dateien miteinander verglichen, was sich da genau geändert hat?

Das ganze geht übrigens auch mit einem Trick mit dem normalen .NET Framework: Lossless JPEG Rewrites in C#

The trick is to rotate the picture by 90 degrees. In this case the framework supplies a lossless rewriting of a jpeg file

08.01.2020 - 18:48 Uhr

Wie willst du denn deine Software überhaupt veröffentlichen, wenn du nicht weißt, welche Abhängigkeiten sie hat?

Das wirst du doch herausbekommen können.

Was gibt AppDomain.UnhandledException aus, was sagt DependencyWalker, was sagt die Ereignisanzeige? Liest du die Antworten überhaupt, die du hier im Forum bekommst?

08.01.2020 - 18:42 Uhr

Ja, ich habe mich mißverständlich ausgedrückt. Ich meinte das ViewModel.

Das ViewModel ist doch Teil der View (bzw. UI oder Präsentationsschicht).

Datenbankzugriffe gehören in die Datenzugriffsschicht (DAL), wie der Name schon sagt, und weder in die Präsentationsschicht, noch in die Businesslogik.

gehören in das ViewModel, ist doch Sonnenklar!

Sagt wer?

07.01.2020 - 22:01 Uhr

Ich weiss, dass das unsauber ist, hatte zu dem Zeitpunkt kaum eine Wahl

Man hat immer eine bessere Wahl als "Magic Strings" mit kryptischen Bezeichnern in Eigenschaften mit kryptischen Bezeichnern zu speichern, an die man nicht ohne Casting kommt!

Wie z.B. einen SQL Query (incl. Pipapo) im ModelView.
Auch steigt der Speicherverbrauch stetig an (Weil ich das MV im CodeBehind aufrufen/instanzieren muss um Daten von MySQL darin zu speichern).

Datenbankzugriffe gehören überhaupt nicht in die View. Siehe dazu [Artikel] Drei-Schichten-Architektur

In der Berufsschule wird MVVM leider nicht drangenommen

Das kannst du auch nicht erwarten 😉

Tutorials sind leider oft spezifisch, nicht Allgemein und verständlich.

Wenn du etwas nicht verstehst, und trotzdem etwas lernen willst, kannst du gerne hier fragen. Dazu ist das Forum ja da 😃

06.01.2020 - 18:45 Uhr

Die Änderungen können von leicht unterschiedlichen Farben eines Buttons bis hin zu einer kompletten Neugestaltung des gesamten UI mit verschiedenen Buttons und gleichen Buttons an verschiedenen Stellen etc. reichen.

Für diesen Teil benötigst du einen Editor für die XAML-Dateien. Das kann ein einfacher Text-Editor sein, oder ein Editor mit Syntax-Highlighting wie Kaxaml oder XAMLPad, oder ein visueller Editor wie icsharpcode/WpfDesigner.

06.01.2020 - 17:18 Uhr

Nach jedem Wechsel steigt der Speicherverbrauch um ein paar MB, obwohl die Pages und alle Inhalte eigentlich gelöscht sein sollten.

Gibt es irgendwann eine OutOfMemoryException?

Wie hast du das denn überhaupt gemessen? Mit einem Profiler? Mit dem Taskmanager?

(App.Current as App).MainWindowButtonReLief = "R";  

So sollte man seinen Anwendungsstatus aber nicht steuern. Da gibt es wesentlich bessere Wege. Schau dir mal diesen Artikel an: [Artikel] MVVM und DataBinding.

06.01.2020 - 17:07 Uhr

Ich fände es schon in Ordnung, das hier stehen zu lassen. Es kann ja jeder Entwickler selbst Anpassungen vornehmen.

Man sollte aber am besten gleich im Eingangsposting Hinweise auf die Einschränkungen geben. Die Verwendung von XML als Serialisierungsformat bringt ja auch noch weitere Einschränkungen mit sich, z.B. werden nur öffentliche Eigenschaften serialisiert, und "Circular References" (Kreisreferenzen?, wie heißt das auf Deutsch?) verursachen eine Exception.

Eine binäre Serialisierung würde hier Abhife schaffen, und meist auch den eigentlichen Vergleich beschleunigen.

02.01.2020 - 21:44 Uhr

How to: Create Text with a Shadow

Was ich wirklich nicht verstehe ist, daß dieses Tutorial bei mir das erste Suchergebnis für "text shadow wpf" ist, und dort alle Möglichkeiten aufgeführt sind, die es gibt, um einen Text mit Schatten anzuzeigen. Wieviel schneller hättest du das Problem lösen können, wenn du nur mal bei Google gesucht hättest, bevor du den Post erstellst und auf Antworten warten mußt...

Deswegen steht in [Hinweis] Wie poste ich richtig? auch unter Punkt 1.1: Erst suchen und in die Doku schauen, dann posten

23.12.2019 - 10:30 Uhr

In dem verlinkten Stackoverflow-Beitrag gibt es ein Code-Beispiel mit den Thumbs. Es gibt die Doku. Und es gibt Projekte, die sowas anwenden, wie z.B. NetworkView.

19.12.2019 - 17:03 Uhr

Was meint Ihr ist der Test überhaupt so relevant?

Absolut irrelevant. Ob eine Darstellung schneller ist oder nicht, hängt von so vielen Dingen ab: Welche Controls verwendet werden, welche und wieviele Daten angezeigt werden, die Art der Daten-Aufbereitung, die Art der Darstellung (Hardwarebeschleunigung oder nicht), CPU, Grafikkarte, Grafiktreiber usw.

Wenn du eine konkrete Aufgabe hast, die zu langsam ist, dann kannst du dich an die Suche nach der Ursache machen. Aber was du machst, ist kein Kriterium für die Entscheidung für eine UI-Technologie.

19.12.2019 - 16:55 Uhr

@witte
Nein, mit der View hat das nichts zu tun.

Man kann Unter-ViewModells verwenden, wenn es sich um Aufgaben oder Zustande handelt, die logisch gekapselt werden sollten. Man muß halt dann das Binding anpassen!

Und ja, die UI-Logik gehört ins ViewModel, und die Anwendungs-Logik ins Model, nicht in irgendwelche "Logic-Klassen". Hier gibt es alle Infos dazu, was ins ViewModell gehört: [Artikel] MVVM und DataBinding

19.12.2019 - 12:35 Uhr

Evtl. liegt ja der StatusStrip auch in einem anderen Control (Panel?), aber wir kennen den Aufbau deiner Forms ja nicht.

19.12.2019 - 12:34 Uhr

Bitte formatiere deinen Code und verwende Code-Tags, siehe [Hinweis] Wie poste ich richtig?

Wenn deine Methode als void deklariert ist, darf sie auch keinen Wert zurückgeben. In deinem Fall sollte der Rückgabetyp string sein.

Bitte wirf mal einen Blick hier rein: [FAQ] Wie finde ich den Einstieg in C#?

18.12.2019 - 18:30 Uhr

Meinst du so:


public class MainViewModel
{
  public SubViewModel1 Property1 { get; set; }
  public SubViewModel2 Property2 { get; set; }
}

<Control1 Content="{Binding Property1.SubPropertyA}" />
<Control2 Content="{Binding Property2.SubPropertyB}" />