nếu bạn thực sự muốn làm MVVM, cố gắng quên đi "làm thế nào tôi có thể thêm điều khiển". bạn không phải, chỉ cần nghĩ về viewmodels của bạn - WPF tạo ra các contols cho bạn :)
trong trường hợp của bạn cho phép nói rằng chúng tôi có một SearchViewModel và một 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;}
}
cho đến bây giờ bạn không phải suy nghĩ về liên kết/chế độ xem của người dùng. trong SearchView của bạn, bạn tạo một ItemsControl và liên kết ItemsSource với MySearchItems.
<ItemsControl ItemsSource="{Binding MySearchItems}"/>
bây giờ bạn thấy tất cả SearchEntryViewmodels trong ItemsControl (chỉ cần ToString() atm).
Để phù hợp với yêu cầu của bạn để hiển thị mỗi SearchEntryViewmodel với 3Comboboxes và vân vân bạn chỉ cần phải xác định một DataTemplate trong Tài nguyên của bạn
<DataTemplate DataType="{x:Type local:SearchEntryViewmodel}">
<StackPanel Orientation="Horizontal">
<Combobox ItemsSource="{Binding MyPropertyInSearchEntryViewmodel}"/>
<!-- the other controls with bindings -->
</StackPanel>
</DataTemplate>
thats all :) và bạn không bao giờ phải suy nghĩ về làm thế nào tôi có thể thêm điều khiển tự động. bạn chỉ cần thêm SearchEntryViewmodel mới vào bộ sưu tập của mình.
phương pháp này được gọi là Viewmodel Đầu tiên và tôi nghĩ đó là cách dễ nhất để thực hiện MVVM.
Cảm ơn. Tìm thấy cách tiếp cận này trong khi tôi đang tìm kiếm trên mạng. Điều cần biết là tôi đã đi đúng hướng. – spiritqueen