Tabcontrol und MVVM



  • Nun gut dachte dadurch wird das ganze überischtlicher. Ist ja auch so. Aber wenn das Control halt sehr teuer ist. Dann mach ichs über Datatemplates.

    Treeview ist denke ich nicht das was ich suche. Möchte das ganze grafisch darstellen und nicht einfach nur als Liste.

    Also Haus als Border. Raum wieder als Border der im Border des Hauses gezeichnet wird usw.



  • Eine TreeView kann das auch, musst nur das Style umbauen und das auf und zu klappen unterbinden.
    Schon hast du die Möglichkeit des HiraricalDataTemplates und musst dich nicht mit UserControls rum prügeln.



  • @Offtopic.

    Ich find ja der David sollte ruhig mal ein Artikel über MVVM schreiben oder auf seiner Seite nen Tutorial machen. Finde das das nen sehr wichtiges Thema ist, und es gibt wirklich kaum gute Tutorials im Netz. Da ich ja weiß das er gut erklären kann, fänd ich das echt mal Cool 😃



  • Wie man MVVM "richtig" macht ist im Web recht kontrovers, und ich will meine herangehensweise (auch wenn sie sich immer mit den anderen deckt) nicht als die absolut richtige verkaufen.
    Tutorials wirds schon genug geben ^^

    Firefighter schrieb:

    Da ich ja weiß das er gut erklären kann

    Kommt auf meine Stimmung an, manchmal bin ich einfach nur ein Kotzbrocken ^^



  • David W schrieb:

    Wie man MVVM "richtig" macht ist im Web recht kontrovers, und ich will meine herangehensweise (auch wenn sie sich immer mit den anderen deckt) nicht als die absolut richtige verkaufen.
    Tutorials wirds schon genug geben ^^

    Jedoch ist deine herangehensweise hier im Forum die einzig bekannte 🙂 Von der man auf jeden Fall immer was lernt wenn es Probleme gibt 🙂

    David W schrieb:

    Kommt auf meine Stimmung an, manchmal bin ich einfach nur ein Kotzbrocken ^^

    Joa jeder hat mal seine schlechten Tage.


  • Administrator

    David W schrieb:

    Tutorials wirds schon genug geben ^^

    Viele allerdings auf Englisch. Aber was man allenfalls mal tun könnte, sind entsprechende Links zu sammeln und in die FAQ zu verschieben. MVVM war bei mir eines der grössten Probleme bei WPF, allerdings vor allem deswegen weil mein WPF Buch kein einziges Wörtchen darüber verloren hat. Nicht mal MVVM wurde erwähnt 🙂

    Grüssli



  • Isses bei MVC nicht auch so?
    Kann mich nicht erinnern das dies mal in ein Buch erwähnt wurde ^^

    Anyway, ich denk nicht das meine Website dafür zu gebrauchen ist, sie ist zum einen auch nur auf Englisch 😉 und zudem geht es da nur um meine libs, nichts generelles.

    Firefighter, du hast doch ne website, stell doch selber eins Online ^^ Auf deutsch.
    Ich könnte eins schreiben wenn ich eventuell mal ein real live szenario hätte wo man es deutlicher sieht, die meisten Tutorials die ich kenne behandeln nur die Grundzüge, für Detailfragen muss man wieder irgendwo anklopfen. Daher wäre ein Tutorial gut wo alles mögliche mal aufgezeigt wird.

    Spontan würde mir einfallen.
    - Ne TreeView.
    - Ein Settings Fenster mit diversen Unterseiten.
    - Ein TabControl mit diversen Seiten.
    - Unterfenster, Systemdialoge oder MessageBoxen, how to use.
    - Elegantes Testen von ViewModels mit Mocks und/oder Extract and Override.



  • Ja wäre ne gute Idee David, aber ich würde das gerne in Zusammenarbeit mit dir machen, einfach weil mehr Erfahrung hast, kannst du mich nochmal in ICQ adden(227291261)? Das wir uns mal zusammen setzen und mal so Sachen zusammentragen die dir einfallen und die am besten mit Codebeispielen ausschmücken oder so? Mir liegt das Thema nämlich auch am Herzen und ich würde da gerne tiefer einsteigen.



  • Als Info für alle:
    So schnell wird es zu keinem Deutschen Tutorial meinerseits kommen, Firefighter und Ich, wir haben derzeit einfach zu wenig Zeit.
    Er wegen sein Studium, und ich weil sich beruflich bei mir so einiges verändert und ich nicht weiß wie ich Zeit haben werde.



  • Für alle die nicht auf ein Tutorial in Deutsch warten können / wollen; in den folgenden Büchern wird MVVM auch abgehandelt:

    http://www.amazon.de/gp/product/product-description/3826659368

    http://www.amazon.de/gp/product/3836215381/ref=s9_simh_bw_p14_d0_g14_i2?pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=center-1&pf_rd_r=00G1PAHE6E8JA37RCPZH&pf_rd_t=101&pf_rd_p=223262327&pf_rd_i=288100

    Der Autor vom ersten Link(Norbert Eder) hatte das Thema auch mal in seinem Blog abgehandelt, finde nur leider den Link dazu nicht mehr.



  • Das Bste WPF Buch was man bekommen kann ist das von Adam Nathan
    One Hundred One Windows Phone 7 Apps | ISBN: 0672331195
    (Ob MVVM dabei ist weiß ich allerdings nicht ^^)



  • So jetzt melde ich mich auch mal wieder. An den Feiertagen arbeite ich nicht :-).

    In dem Buch von Thomas Claudius Huber ist das MVVM auch nur angeschnnitten.

    Aber nochmals zu meinem Thema. Wenn ich also das ganze mit einem TreeView mache kann ich für jede Ebene ein eigenes DataTemplate anlegen und das eventuell auch jedes für sich in einer Datei?


  • Administrator

    David W schrieb:

    (Ob MVVM dabei ist weiß ich allerdings nicht ^^)

    Zumindest in einem Vorgänger davon, wurde es nicht mal am Rande erwähnt. Das Buch ist aber trotzdem recht gut, man muss sich einfach unbedingt noch Informationen zu MVVM beschaffen. Wie z.B. von da:
    http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
    http://msdn.microsoft.com/en-us/library/gg430857.aspx
    http://msdn.microsoft.com/en-us/library/gg430869.aspx

    Grüssli



  • Noch ne Frage zu HiraricalDataTemplates. Habe bei Codeproject einiges Dazu gefunden dass mir schon mal viel geholfen hat.

    Hier mal ein kleiner Ausschnitt was ich gemacht habe

    <TreeView.Resources>
        <HierarchicalDataTemplate 
           DataType="{x:Type local:ViewModel1}" 
           ItemsSource="{Binding Liste}">
           <!-- Controlls mit Binding zu den Daten-->
        </HierarchicalDataTemplate>
    
        <HierarchicalDataTemplate 
           DataType="{x:Type local:ViewModel2}" 
           ItemsSource="{Binding Liste}">
           <!-- Controlls mit Binding zu den Daten-->
        </HierarchicalDataTemplate>
    
        <DataTemplate 
           DataType="{x:Type local:ViewModel3}">
           <!-- Controlls mit Binding zu den Daten-->
        </DataTemplate>
     </TreeView.Resources>
    

    So jetzt habe ich den Baum aufgebaut und das Aussehen der einzelnen Knoten festgelegt. Nun habe ich aber immer noch ein Baum zum aufklappen. Und die Elemente sind nicht grafisch ineinander verschachtelt.

    Was muss ich dazu machen?



  • Überschreibe das TreeViewItem Template (ItemContainerStyle) und nimm dort nur den ItemsPresenter rein, wenn die Items innerhalb des HierarchicalDataTemplate bereits ihr Aussehen definieren, brauchen die TreeViewItems kein eigenes Template mehr sondern müssen sie nur noch anzeigen.



  • Ok also doch nicht über HierarchicalDataTemplate. Hättest du mir vieleicht einen kleinen Ansatz an Code.



  • sausebrause schrieb:

    Ok also doch nicht über HierarchicalDataTemplate.

    Doch - beides.
    Du musst es doch je nach Level und Typ unterscheiden können, das kannst du im Style nicht.

    <TreeView>
        <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TreeViewItem}">
                            <ItemsPresenter />
                            <!-- Die Items sind non lookless, sie werden einfach nur dargestellt,
                                 ohne das das TreeViewItem ein eigenes Aussehen haben -->
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TreeView.ItemContainerStyle>
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type local:ViewModel1}" ItemsSource="{Binding Liste}">
                <!-- Controlls mit Binding zu den Daten-->
            </HierarchicalDataTemplate>
    
            <HierarchicalDataTemplate DataType="{x:Type local:ViewModel2}" ItemsSource="{Binding Liste}">
                <!-- Controlls mit Binding zu den Daten-->
            </HierarchicalDataTemplate>
    
            <DataTemplate DataType="{x:Type local:ViewModel3}">
                <!-- Controlls mit Binding zu den Daten-->
            </DataTemplate>
        </TreeView.Resources>
    </TreeView>
    

    (Nur hier im Forum getippt aus dem Gedächtnis)



  • Dank dir. So weit war ich schon. Nur was kommt nun in den Itemspresenter rein. Hier muss ich doch sagen wo Ebene1, 2 oder 3 hingehören. Also wie die Elemente angeordnet werden. Oder? Wie sage ich nun z.B. Ebene1 gehört in das Stackpanel ganz oben hin usw.



  • Und du bist dir ganz sicher dass es funktioniert dass ich die einzelnen Ebenen ineinander darstellen kann.

    Also in einem Tree wird doch alles untereinader dargestellt. Also bin die ganze Zeit am googeln. Finde kein Beispiel bei dem ein Tree seine Items ineinader darstellt. Entweder benutze ich die falschen Suchbegriffe oder es hat halt einfach noch niemand so was gemacht.



  • Ok ich nehme alles zurück und behaupte das Gegenteil:

    Hier wird das ganze auch gemacht:

    http://www.codeproject.com/KB/WPF/AdvancedCustomTreeViewLyt.aspx

    Allerdings nicht mit HierarchicalDataTeplate. Bringt mir insofern auch nicht weiter.


Anmelden zum Antworten