Kann ich WPF irgend wie beschleunigen?

  • WPF

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Kann ich WPF irgend wie beschleunigen?

    Hallo Leute und danke für das reinschauen...

    Meine Frage steht schon im Titel... Ich habe einen Celeron und habe das Gefühl, dass er ganz schon mit dem ganzen Aufbau rum kämpft... Jedenfalls wollte ich mal ausprobieren, ob das was bringt...

    Von mir aus kann er etwas weniger auf Deteils eingehen, Hauptsache schnell. Und bring das was?
    Hallo

    Kommt ganz darauf an was du machst und was alles gerandert werden muss und es gibt in der WPF sehr viele stellschraubem. Stickwort VirtualizingStackpanel z.b.

    Zeig und doch ein Beispiel von dem du meinst es währe dir gefühlt zu langsam. Dann sehen wir mal ob noch was geht.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Also meine Vorgehensweise ist nicht so ganz WPF gerecht....

    meistens baue ich ein Control, denn ich dann im C# zu einem Grid hinzufüge... Der Grund hierfür ist, dass ich es nicht besser weiß und bin öfters mit Helfern auf die Nase gefallen.

    Ich will eigentlich nur weniger Deteils haben, dafür Geschwindigkeit...

    Nur ein Beispiel:
    Angenommen ich habe in der Datenbank ein Item stehen... Die Datenbank ändert sich ständig. Jetzt wenn eine Aktualisierung erfolgt, lösche ich alle Kinder im Grid, und füge die neu ein... Vielleicht ist es nicht so ganz korrekt, leider fällt mir keine andere Möglichkeit ein die Items aktuell zu halten. Es sind nicht viele, dennoch scheint ein Atom CPU damit überfordert zu sein.
    Hallo

    ​Auch wenn du nicht ganz willst, die stärken der WPF liegt im Binding.
    ​Gere können wir hier durchgehen was du benötigst und uns schritt für schritt an ein gutes Endergebniß ranstasten. Aber das hatte wir glaube ich schon mal.
    ​In der WPF macht man so gut wie alles mittels Binding. Wenn du das nicht machst und unbedingt nicht "WPF like" arbeiten willst darfst du dich aber auch nicht wundern wenn die Performance nicht so ganz will. Auch DEIN vorhaben geht übrigens alles über Binding.

    ​Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo

    EugenIS schrieb:

    meistens baue ich ein Control, denn ich dann im C# zu einem Grid hinzufüge

    Geht es jetzt um sowas?

    EugenIS schrieb:

    eine DB Tabelle aktuell halten per Binding

    Oder sowas?

    ​Gerne nehme ich mir Zeit dir ein Beispiel zu erstellen um dir zu zeigen wie eine gewisse Aufgabenstellung korrekt in WPF erledigt wird, du musst mir aber sagen was bei dir der Flaschenhals ist.
    ​Am besten wäre es wenn du ein Beispielprojekt erstellst wo die Performance nicht zufriedenstellend ist, und wir versuchen hier an den schrauben zu drehen.

    ​Wenn es rein um Daten geht Bindest du einfach an ein Property im ViewModel und aktualisierst dieses, den Rest übernimmt die WPF.

    Grüße
    ​Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ist das Thema erledigt??
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @EugenIS es geht also um Daten aus einer Datenbank, richtig?

    ​Hast du die Daten Code-seitig in einer DataTable? Wenn ja, dann ist das ganze sehr einfach! Es gibt ein Control "DataGrid" welches so aussehen könnte (Kannst du therotisch einfach in deine Anwendung kopieren):

    XML-Quellcode

    1. ​<DataGrid x:Name="MyDataGrid" ItemsSource="{Binding}" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" ScrollViewer.PanningMode="HorizontalFirst" CanUserAddRows="False" >
    2. <DataGrid.Columns>
    3. <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" IsReadOnly="True" FontSize="14"/>
    4. <DataGridTextColumn Header="PLZ" Binding="{Binding Path=PLZ}" IsReadOnly="True" FontSize="14"/>
    5. <DataGridTextColumn Header="Ort" Binding="{Binding Path=Ort}" IsReadOnly="True" FontSize="14"/>
    6. <DataGridTextColumn Header="Straße" Binding="{Binding Path=Strasse}" IsReadOnly="True" FontSize="14"/>
    7. <DataGridTextColumn Header="Haus Nr." Binding="{Binding Path=HausNr}" IsReadOnly="True" FontSize="14"/>
    8. </DataGrid.Columns>
    9. </DataGrid>


    ​Binding="{Binding Path=xxx]" --> für xxx kannst du direkt den Spaltennamen aus der DataTable einsetzen

    ​Im Code Behind brauchst du nur noch einmalig Folgendes machen!

    VB.NET-Quellcode

    1. ​MyDataGrid.DataContext = myTable


    ​Jetzt brauchst du nur noch deine DataTable refreshen und brauchst dich um die Visu nicht mehr kümmern, da jede Änderung an der DataTable ("myTable" im Beispiel) automatisch dargestellt wird. Auch die Scroll-Position geht nicht verloren.
    @Jan@81
    Es ging eher um allgemeine Performance. Ausserdem schrieb er ja "Grid" und nicht "DataGrid".
    Zu dem sollte man in der WPF keine DataTable verwenden. Schau die die ObservableCollection in zusammenhang mit der CollectionViewSource (ICollectionView).
    Das wäre die "saubere" Lösung in der WPF.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##