Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

MVVM μπέρδεμα

Îåêßíçóå áðü ôï ìÝëïò mukumuku. Τελευταία δημοσίευση από το μέλος mukumuku στις 08-07-2011, 14:30. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  08-07-2011, 01:10 66511

    MVVM μπέρδεμα

    Γεια σας παιδιά,

    Έχω ένα πρόβλημα που με βασανίζει και δεν μπορώ να σκεφτώ λύση καθότι και αρχάριος με το WPF. Λοιπόν, στο application που δουλεύω το interface είναι σαν το visual studio περίπου και χρησιμοποιούμε το MVVM pattern. Στα δεξιά λοιπόν έχουμε ένα tab container μέσα στο οποίο μπαίνουν κάποια UserControls, τα λεγόμενα Property Panels ανάλογα με το αντικείμενο που είναι επιλεγμένο σε ένα treeview. Βασικά είναι όλα εξαρχής φορτωμένα μέσα σε ένα stackpanel και γίνονται Visible/Collapsed ανάλογα με την επιλογή στο treeview. Τα panels είναι απλά μια συλλογή από textboxes, checkboxes και λοιπά controls που δίνουν πρόσβαση στα μέλη των κλάσεων/μοντέλων της εφαρμογής.

     Το πρόβλημα τώρα. Έχω μια κλάση ονόματι ParticleSystem η οποία έχει μια λίστα από αντικείμενα μιας κλάσης Emitter. Και οι δύο κλάσεις έχουν ξεχωριστά property panels. Αυτό που θέλω είναι χωρίς να σκοτώσω το MVVM, μόλις ανοίγει το Panel του ParticleSystem, να φορτώνουν αυτόματα (binding) όσα Panels για Emitters υπάρχουν, σε έναν container στο κάτω μέρος του Panel του ParticleSystem ή ίσως και μέσα στο Tab Container ώστε να φαίνεται κατά κάποιο τρόπο ενιαίο το design. Γίνεται κάπως αυτό χωρίς foreach Emitter add EmitterPanel to StackPanel.Children?
  •  08-07-2011, 14:30 66515 σε απάντηση της 66511

    Απ: MVVM μπέρδεμα

    Οκ, βρήκα λύση σήμερα με λίγο ψάξιμο. Την παραθέτω για όποιον έχει παρόμοιο πρόβλημα στο μέλλον. Η λύση είναι ένα ItemsControl και ένα datatemplate με το layout του custom control που θέλουμε να φορτώσουμε. 

    <DataTemplate x:Key="MyDataTemplate">
                <StackPanel>
                      ...Stuff here with binding to SomeType attributes
                </StackPanel>
    </DataTemplate>
    <ItemsControl ItemsSource="{Binding Path=SomeList<SomeType>, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource MyDataTemplate}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems