2012-06-19 21 views

Odpowiedz

44

jeśli naprawdę chcesz zrobić MVVM, starają się zapomnieć "Jak mogę dodać kontroli". nie musisz, po prostu pomyśl o swoich modelach - WPF tworzymy dla ciebie kontrole :)

w twoim przypadku powiedzmy, że mamy SearchViewModel i SearchEntryViewmodel.

public class SearchEntryViewmodel 
{ 
    //Properties for Binding to Combobox and Textbox goes here 
} 


public class SearchViewModel 
{ 
    public ObservableCollection<SearchEntryViewmodel> MySearchItems {get;set;} 
    public ICommand AddSearchItem {get;} 
} 

do tej pory nie musisz myśleć o sterowaniu użytkownika/widoku. w swoim SearchView tworzysz ItemsControl i wiąże ItemSource z MySearchItems.

<ItemsControl ItemsSource="{Binding MySearchItems}"/> 

widać teraz wszystkie swoje SearchEntryViewmodels w ItemsControl (tylko toString() atm).

Aby dopasować swoje wymagania, aby pokazać każdy SearchEntryViewmodel z 3Comboboxes i tak dalej po prostu trzeba zdefiniować DataTemplate w zasobach

<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}"> 
    <StackPanel Orientation="Horizontal"> 
     <Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/> 
     <!-- the other controls with bindings --> 
    </StackPanel> 
</DataTemplate> 

to wszystko :) i nigdy nie myśleć o tym, w jaki sposób można dodać elementy sterujące dynamicznie. musisz tylko dodać nowy SearchEntryViewmodel do swojej kolekcji.

to podejście nazywa się Viewmodel First i uważam, że jest to najprostszy sposób na wykonanie MVVM.

+1

Dzięki. Znalazłem to podejście, gdy szukałem w sieci. Dobrze wiedzieć, że byłem na dobrej drodze. – spiritqueen

0

Jeśli jesteś nowy zarówno MVVM i WPF, jest naprawdę wspaniały film instruktażowy, w jaki sposób architekta C#/aplikacji WPF/MVVM Jason Dollinger, który jest dostępny tutaj on lab49. Cały kod źródłowy, który rozwija w tym niesamowitym filmie, jest również dostępny pod numerem right here on lab49.

Po obejrzeniu tego nie będziesz miał żadnych problemów z rozwinięciem widoku wyszukiwania na pewno.

+0

Witryna jest zablokowana w naszym biurze. Postaram się otworzyć później w domu. Dzięki za link do dobrego posta. – spiritqueen

0

Jedną z opcji jest możliwość utworzenia pól tekstowych i pól combobox w backendach poprzez utworzenie nowego obiektu. Ale lepszą opcją jest możliwość utworzenia jednej kontrolki użytkownika, która zawiera Wszystkie teksy i pola combobox, które chcesz dodać iw jakim formacie chcesz. Po utworzeniu, po naciśnięciu przycisku, można utworzyć instancję tego elementu sterującego użytkownika i ustawić go w siatce lub dowolnej innej kontrolce, korzystając z właściwości elementu sterującego: SetValue.

Jeśli jesteś nowym użytkownikiem WPF i MVVM, przeczytaj ten blog, aby to zrozumieć.

https://radhikakhacharia.wordpress.com/2012/06/01/wpf-tutorial-3/

https://radhikakhacharia.wordpress.com/2012/02/13/model-view-viewmodel/

+0

Również zablokowane w naszym biurze. Dostęp później. Dzięki. – spiritqueen

Powiązane problemy