Support, Anregungen, Wünsche zur Tutorialreihe <WPF lernen/>

  • WPF MVVM

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

    Du machst dein Beispiel zeilenweise(das ist mir klar) - meines ist aber spaltenweise dargestellt...
    In der selben Zeile habe ich 7 Tage (Gruppen[Mo - So]), die ich dann spaltenweise zusammengefasst darstellen möchte...
    Je Tag sind 3 verschiedene Eigenschaften, die in der Gruppe angezeigt werden...

    Zeile: Gruppe: Tag1(Name1, Zyklus1, Detail1), Gruppe: Tag2(Name2, Zyklus2, Detail2), ... , Gruppe: Tag7(Name7, Zyklus7, Detail7)

    Diese Daten befinden sich in einer Tabelle:
    ID, Name1, Zyklus1, Detail1, Name2, Zyklus2, Detail2, ... , Name7, Zyklus7, Detail7

    Verstehst du, was ich meine?
    Wie weise ich die Daten den Gruppen zu?
    Daher habe ich diese Extraklasse mit den Dependency-Properties zwischengestellt...
    Hallo

    Das ist mir soweit klar. Jedoch hat das eine mit dem anderen nichts zu tun. Bei dir ist die Marke ein Tag
    Am besten du machst hierfür einen neuen Thread im WPF Bereich auf. Denn.....

    Ich denke jetzt schon das das DataGrid die falsche herangehensweise ist. Bitte nicht so sehr an WinFroms denken wo man nicht ganz so viele möglichkeiten hatte wie in der Welt der WPF.
    Ich würde dein "Problem" vermutlich (wenn ich es richtig verstanden habe) mit einem UniformGrid machen.

    Aber. Mach doch schnell mal einen Thread auf. Mach vieleicht eine Skizze wie du es dir vorstellst und lass hier ruig deine Fantasie spielen. In der WPF kann man sehr viel machen.
    Falls du bereits eine Datenklasse hast poste diese und wir gehen alles langsam durch so das es für dich passt. Das bekommen wir schon hin. Da musst du jetzt nicht auf das Tutorial warten.

    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. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Hy Sascha,
    ich befasse mich auch gerade einwenig mit WPFund ich van dein Video Tutorial sehr gut und verständlich!
    Ich habe jetzt auch schon einiges ausprobiert. So weit funktioniert das auch gut.
    Ich habe aber das Problem das mir in einem ItemTemplate für die TextBox Event.triggers ausgeführt werden.
    anbei mal ein Beispiel.

    XML-Quellcode

    1. ​<Style x:Key="OrdnerList" TargetType="{x:Type ListView}">
    2. <Style.Resources>
    3. <SolidColorBrush x:Key="Background" Color="AntiqueWhite" />
    4. <SolidColorBrush x:Key="Foreground" Color="Black"/>
    5. <SolidColorBrush x:Key="Fill" Color="AliceBlue"/>
    6. </Style.Resources>
    7. <Setter Property="Template">
    8. <Setter.Value>
    9. <ControlTemplate>
    10. <Border BorderThickness="2" BorderBrush="Black" Background="{StaticResource Background}" Margin="5,2.5,5,2.5" HorizontalAlignment="Stretch">
    11. <Grid>
    12. <Grid.RowDefinitions>
    13. <RowDefinition Height="auto"/>
    14. <RowDefinition Height="1*"/>
    15. </Grid.RowDefinitions>
    16. <ItemsPresenter Grid.Row="1"/>
    17. </Grid>
    18. </Border>
    19. </ControlTemplate>
    20. </Setter.Value>
    21. </Setter>
    22. <Setter Property="ItemTemplate" >
    23. <Setter.Value>
    24. <DataTemplate>
    25. <Border BorderThickness="2" BorderBrush="Black" Margin="5,2.5,5,2.5">
    26. <Grid>
    27. <Grid.ColumnDefinitions>
    28. <ColumnDefinition Width="1*"/>
    29. <ColumnDefinition Width="1*"/>
    30. <ColumnDefinition Width="1*"/>
    31. </Grid.ColumnDefinitions>
    32. <Grid.RowDefinitions>
    33. <RowDefinition Height="Auto" />
    34. <RowDefinition Height="1*"/>
    35. </Grid.RowDefinitions>
    36. <Label Content="Path" Grid.Row="0"/>
    37. <Label HorizontalAlignment="Center" Content="Dummydatei" Grid.Column="1" Grid.Row="0"/>
    38. <Style x:Key="OrdnerList" TargetType="{x:Type ListView}">
    39. <Style.Resources>
    40. <SolidColorBrush x:Key="Background" Color="AntiqueWhite" />
    41. <SolidColorBrush x:Key="Foreground" Color="Black"/>
    42. <SolidColorBrush x:Key="Fill" Color="AliceBlue"/>
    43. </Style.Resources>
    44. <Setter Property="Template">
    45. <Setter.Value>
    46. <ControlTemplate>
    47. <Border BorderThickness="2" BorderBrush="Black" Background="{StaticResource Background}" Margin="5,2.5,5,2.5" HorizontalAlignment="Stretch">
    48. <Grid>
    49. <Grid.RowDefinitions>
    50. <RowDefinition Height="auto"/>
    51. <RowDefinition Height="1*"/>
    52. </Grid.RowDefinitions>
    53. <ItemsPresenter Grid.Row="1"/>
    54. </Grid>
    55. </Border>
    56. </ControlTemplate>
    57. </Setter.Value>
    58. </Setter>
    59. <Setter Property="ItemTemplate" >
    60. <Setter.Value>
    61. <DataTemplate>
    62. <Border BorderThickness="2" BorderBrush="Black" Margin="5,2.5,5,2.5">
    63. <Grid>
    64. <Grid.ColumnDefinitions>
    65. <ColumnDefinition Width="1*"/>
    66. <ColumnDefinition Width="1*"/>
    67. <ColumnDefinition Width="1*"/>
    68. </Grid.ColumnDefinitions>
    69. <Grid.RowDefinitions>
    70. <RowDefinition Height="Auto" />
    71. <RowDefinition Height="1*"/>
    72. </Grid.RowDefinitions>
    73. <Label Content="Path" Grid.Row="0"/>
    74. <Label HorizontalAlignment="Center" Content="Dummydatei" Grid.Column="1" Grid.Row="0"/>
    75. <Label HorizontalAlignment="Center" Content="HiddenFolder" Grid.Column="2" Grid.Row="0"/>
    76. <TextBox Text="{Binding Path=Ordnername, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, NotifyOnSourceUpdated=True}" Margin="0,0,5,0" Grid.Row="1" >
    77. <TextBox.Resources>
    78. <Style TargetType="{x:Type TextBox}">
    79. <Setter Property="Validation.ErrorTemplate"
    80. Value="{StaticResource GlobalErrorTemplate}" />
    81. <Style.Triggers>
    82. <Trigger Property="Validation.HasError"
    83. Value="True">
    84. <Setter Property="ToolTip"
    85. Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
    86. </Trigger>
    87. </Style.Triggers>
    88. </Style>
    89. </TextBox.Resources>
    90. </TextBox>
    91. <CheckBox HorizontalAlignment="Center" IsChecked="{Binding Path=Deleteset}" Margin="0,0,5,0" Grid.Column="1" Grid.Row="1"/>
    92. <CheckBox HorizontalAlignment="Center" IsChecked="{Binding Path=Hiddenfolder}" Margin="0,0,5,0" Grid.Column="2" Grid.Row="1"/>
    93. </Grid>
    94. </Border>
    95. </DataTemplate>
    96. </Setter.Value>
    97. </Setter>
    98. <Setter Property="Background" Value="{StaticResource Fill}"/>
    99. <Setter Property="SelectionMode" Value="Single"/>
    100. <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    101. </Style>

    das ganz hängt dann in einer listview in der Windos XAML
    angezeigt wiwird allles aber wie gesagt der Event trigger der TextBox wird nicht behandelt.

    vielleicht hat jemand eine Idee.
    Gruß
    Robert
    Hallo

    Danke für dein Lob.

    Ich kann es gerade nicht probieren, versuche aber mal in einem Setter eines Styles initial das Property zu setzen, dies wird oft benötigt.

    XML-Quellcode

    1. <TextBox Text="{Binding Path=Ordnername, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, NotifyOnSourceUpdated=True}" Margin="0,0,5,0" Grid.Row="1" >
    2. <TextBox.Resources>
    3. <Style TargetType="{x:Type TextBox}">
    4. <Setter Property="ToolTip" Value={x:Null}/>
    5. <Setter Property="Validation.ErrorTemplate"
    6. Value="{StaticResource GlobalErrorTemplate}" />
    7. <Style.Triggers>
    8. <Trigger Property="Validation.HasError"
    9. Value="True">
    10. <Setter Property="ToolTip"
    11. Value="{Binding (Validation.Errors)[0].ErrorContent, RelativeSource={x:Static RelativeSource.Self}}"/>
    12. </Trigger>
    13. </Style.Triggers>
    14. </Style>
    15. </TextBox.Resources>
    16. </TextBox>


    Code ist jetzt aus dem Kopf, sollte aber passen.
    Ansonsten prüfe bitte ob HasError wirklich True ist!!

    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. ##

    Danke Sascha,
    ich hab jetzt gefunden es lag daran das ich da Müll mache wie immer :D . Die Bindung ist falsch bzw. geht in eine andere Klasse, wenn man da den IDataErrorInfo aktiviert geht es dann auch. Ich muss mir das ViewModel nochmal anschauen und evt. neu Disignen.
    danke noch mal für die Idee.
    Gruß
    Robert
    Moin Sascha,

    ich hab mich dann auch mal an dein Tutorial gewagt und das erste Video jetzt durch. Ich hab echt Alles gut verstanden, die Geschwindigkeit war auch super. Und wenn man mal länger braucht kann man so Videos ja auch anhalten oder zurückspulen ;)
    Ich werde mich dann jetzt mal langsam aber sicher weiter durcharbeiten und hoffe, dass du beim Drehen der Videos so viel Freude hast wie ich beim Gucken :)

    Gruß
    Jonny
    Danke für die Blumen Jonny

    Es freut mich das es dir gefällt, solltest du Fragen haben und/oder etwas nicht verstanden haben kannst du dich gerne hier melden. Ich wünsche dir weiterhin viel spass damit und das du gefallen an der WPF findest.

    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 Sascha,
    ich bin beeindruckt von deinem Tutorial.
    Ich weiß wieviel Arbeit dies macht, da ich in anderer Anwendung viel Unterstützung leiste.
    Ich habe niemals geglaubt, das ein YouTube etwas taugt, aber du hast mich des besseren belehrt, auch weil du auch den Quellcode zum Download anbietest.

    Ich habe WPF mehr auf die harte Tour übergebraten bekommen und nutze nun dein Tutorial etwas besser zu verstehen, was im Hintergrund abgeht.
    Du bringst es genau so rüber, wie es sich gehört, ohne Schnick Schnack mit viel Liebe zum Verstehen und ohne die große Keule.

    Ich hoffe, dass du genauso viel Freude noch hast, Data Binding zu erklären, das ist leider sehr vernachlässigt in aller Literatur, wie das wirklich funktioniert.
    Ganz erfrischend finde ich deine Aussage, dass MVVM nicht der Weisheit letzter Schluss ist.
    Mittlerweile setzt es sich wohl selbst bei den selbstintelligentesten Möchtegernen durch, dass Ergebnis über Schönheit steht (auch wenn immer noch die wenigsten kapiert haben, dass der Anwender über allem steht)

    Ich hoffe, du machst weiter, auch wenn hier wenig FeedBack ist, aber du machst es wirklich gut - hoppla - sehr gut - hoppla sehr sehr gut.

    Vielen Dank für Deine Zeit die du einbringst - es gibt bestimmt sehr viel mehr Menschen, die das wertschätzen, als du durch Klicks erfährst.

    Gruß Peter
    Hallo @Andromeda

    Erstmal danke für die aufmunterten Worte. In der Tat ist hier wenig log und es kommt mir ein wenig vor als würde die WPF in diesem Forum nicht wirklich gut aufgenommen aber nichts desto trotz mache ich auf jeden Fall weiter.
    Aufgrund von Krankheit und diversen privaten erledigungen konnte ich in der letzten Zeit nicht viel machen, was sich allerdings jetzt wieder ändern wird.

    Das erste Kapitel zum Thema Binding habe ich soweit fertig und muss nur noch das Video machen. Ich hoffe das ich morgen dazu komme.
    Evtl. kannst du ja gleich nach dem ersten Video über Binding ja deinen Senf dazu geben was du evtl. vermisst, gerne gehe ich auf euch und eure Fragen ein.

    So viel kann ich sagen, jetzt werde ich wieder etwas regelmäßiger etwas Posten. Und danke nochmals für das Lob, bin ja richtig rot geworden!!

    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. ##

    @Nofear23m: Ich bin stiller Follower, da ich auf längere Sicht schon vorhabe "zu wechseln". Daher von meiner Seite die Vorfreude auf mehr. Allerdings bin ich deshalb auch erstmal sehr schweigsam beim Thema WPF. Weil ich ganz am Anfang der Entwicklung stehe. Deine Tuts sagen mir ziemlich zu und geben einen leichten, aber schnellen Einstieg ins Thema. Gefällt mir. Aber bis ich was Konstruktives in den anderen Threads schreiben kann und selber WPF-ich-hab-da-mal-ne-Frage-Threads eröffne, vergeht wohl noch ne Weile. Wer viele Jahre old-style-WinForms eingebläut bekommen hat oder sich selber daran festgebissen hat, der wird wohl noch ne Weile brauchen, bis es Klick macht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo @VaporiZed

    Das freut mich zu hören. Ich dachte mir nur das es eben hier und da Fragen geben würde welche ich offen gelassen hatte (ist ja meine erste Tutorialreihe überhaupt) da ich nicht so geübt bin.
    Gerade bei Triggern und Templates dachte ich das hier was kommen würde. Deshalb dachte ich fast gar nicht mehr an die typischen "stillen leser", aber gut zu wissen ;)

    Es geht nun auf jeden Fall weiter, die Zeit nehme ich mir einfach. Vorallem weil es jetzt dann bald Interessant wird und wird zu den Praxisnahen Beispielen kommen werden.

    Grüße aus Österreich
    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. ##

    Ich muss mich @VaporiZed anschliessen. ich bin auch ein stiller Leser. Ichh abe in 4 Jahren immer wieder Anläufe unternommen, etwas kleiners in WPF auf die Beine zu stellen und bin immer wieder gescheitert, letztlich dann auch an der Zeit, die ich nicht habe.
    Ich bin aber sowohl beruflich als auch mit meinen Winform Projekten mehr als nur ausgelastet und wage mich daher auch nicht mehr neu an WPF heran, bis ich einen Weg sehe wie ich meine Applikationen überhaupt in WPF lösen könnte. Keine Frage, dass das geht, aber ich bin eben auch nur ein Autodidakt dem in vielerlei Hinsicht Grundlagen fehlen. Zudem zahlt mir mein Arbeitgeber auch keine Leergänge oder auch nur die Literatur. Zudem funktionieren meine Winform Projekte sehr gut. Von Anfang an habe ich, weil es bei meiner Arbeit immer um Datenverarbeitung geht (Massendaten), mich auf @ErfinderDesRades Ratschläge und Tutorial gestürzt. Hier habe ich den Eindruck, es ist noch einmal sehr viel schwerer mit Datasets auf WPS schwenken zu wollen. Und ich habe keine Idee wie ich meine Aufgaben unter WPF abbilden kann.

    Ich hoffe da sehr, dass sich das mit deinem Tutorial hier für mich ändert.
    Hallo

    Dksksm schrieb:

    Zudem zahlt mir mein Arbeitgeber auch keine Leergänge oder auch nur die Literatur.

    Sollte aber schon der Fall sein, zumindest wenn man diesem Bereich arbeitet. Ein Mechaniker wird wohl nicht zu nem WPF Lehrgang geschickt.

    Dksksm schrieb:

    Hier habe ich den Eindruck, es ist noch einmal sehr viel schwerer mit Datasets auf WPS schwenken zu wollen. Und ich habe keine Idee wie ich meine Aufgaben unter WPF abbilden kann.

    Ist anders, aber nicht schwerer würde ich sagen. Aber das nehme ich auch noch durch und wir kommen auch sogar zu Entity Framework da ich finde es harmoniert ganz gut mit MVVM.

    Grüße und danke für die Info das es doch ein paar leser gibt.
    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. ##

    Ich muss mich da @Dksksm anschliessen. Habe mit VB.net völlig falsch angefangen und wurde von @ErfinderDesRades auf den richtigen weg gebracht. Seit dem Arbeite ich DataSet Only, und habe bisher nichts anderes gebraucht. Dies möchte ich dann auch in WPF so handhaben. Hatte ich auch schon mal nach gefragt, da hast Du mir den Hinweis mit DataAccessLayer gegeben. Da dies aber doch schon mehr Erfahrung in WPF erfordert als ich sie habe, warte ich damit noch bis ich soweit bin.

    Solange spiele ich mit dem Wissen aus deinen Tutorials herum und warte gespannt auf das nächste Tutorial.

    Es gibt bestimmt einige denen es so geht, also mach weiter so super Tutorials und lass dich nicht entmutigen. Du machst das super.
    :thumbup: :thumbsup:
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hi Sascha,
    ich bin auch stiller mitleser, weil mir einfach die Zeit fehlt, deine Tuts durchzugehen. Daher erstelle ich im Moment immernoch Winforms.
    Ich denke aber das ich künftig viel mehr mit WPF machen möchte.
    Bei mir sind als DB hauptsächlich MSSQL (Firma) und DataSet only (privat).
    Was auch mehr wird ist die Verbindung zum Sharepoint online.
    Daher, mach weiter, ich freue mich auf weitere Videos, auch wenns bei mir grad zeitlich echt schwierig ist.
    Trotzdem mal ein riesen Dankeschön für deine Arbeit!
    "Hier könnte Ihre Werbung stehen..."
    @MichaHo und @Akanel

    Das freut mich sehr, wirklich. Na dann werde ich mich jetzt dann gleich hinsetzen und das nächste Video aufnehmen.
    Ich hoffe ich kannst heute noch hochladen und den Text dazu schreiben.

    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 Leute

    Ich habe zwar am Mittwoch noch einen Beitrag eingereicht, dieser wurde jedoch bis heute noch nicht freigeschaltet. Naja, Urlaubszeit.
    Am Donnertag habe ich dann den nächsten mit einem Video hochgeladen, auch noch nichts.

    Ich werde mal urgieren und gib euch bescheid wenn es soweit ist. Nur das Ihr nicht denkt ich halte meine versprechen nicht.

    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. ##

    Ich habe mir das Video schon ein bisschen angesehen, so wie ich Zeit hatte.
    Habe dich bei YT abonniert und dementsprechend eine Nachricht bekommen das es ein neues Video gibt.
    Hatte fälschlicherweise in dem anderen thread was geschrieben, aber da unterliegt alles der Moderationsfreigabe wie ich feststellen musste.
    Trotz allem, mal wieder super Arbeit. Bin begeistert.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo @Akanel
    Oh, abboniert. Freut mich.
    Ich hatte ja zuerst einen Beitrag geschrieben welcher das Binding erklährt und zeigt WIE Binding im Grunde funktioniert, da ich finde das es nicht schlecht ist das zu wissen weil einem das Binding dann viel logischer vorkommt, man versteht leichter was hier genau passiert.

    Mit dem Video an sich bin ich jetzt nicht so zufrieden, hatte leider nicht genug Zeit zum schneiden und ich finde es auch zu lange. Aber ich werde mich bessern.
    Freut mich aber das es dir trotzdem gefällt.

    PS: Die Antwort in dem anderen Thread wird dann vermutlich vom Moderator hier im Supportthread eingefügt.

    PPS: Wenn ihr etwas vermisst oder etwas nicht klar ist, raus damit. Ich kann das dann alles im nächsten Video einfliesen lassen!!!

    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. ##

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()