2012-06-19 49 views
15

Tôi khá mới đối với MVVM và WPF, tôi chỉ muốn gật đầu đúng hướng.Thêm điều khiển động trong WPF MVVM

Tôi đang làm việc trên chế độ xem tìm kiếm động trong đó nhấp vào nút nên thêm hàng mới chứa 3 hộp tổ hợp và 2 hộp văn bản. Làm thế nào tôi nên đi về việc này? Cảm ơn.

Trả lời

44

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.

+1

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

0

Nếu bạn chưa quen với MVVM và WPF, có một video hướng dẫn thực sự tuyệt vời về cách kiến ​​trúc sư ứng dụng C#/WPF/MVVM của Jason Dollinger có sẵn tại đây on lab49. Tất cả các mã nguồn mà anh ấy phát triển trong video tuyệt vời này cũng có sẵn right here on lab49.

Sau khi xem, bạn sẽ không gặp bất kỳ sự cố nào khi phát triển chế độ xem tìm kiếm của mình.

+0

Trang web bị chặn trong văn phòng của chúng tôi. Sẽ cố mở sau này ở nhà. Cảm ơn bạn đã liên kết tới một bài đăng hay. – spiritqueen

0

Một tùy chọn là bạn có thể tạo TextBox và combobox trong phần phụ trợ bằng cách tạo một bản dịch mới. Nhưng tùy chọn tốt hơn là bạn có thể tạo một usercontrol chứa tất cả các texbox và combobox mà bạn muốn thêm vào và định dạng nào bạn muốn. Sau khi tạo khi nhấn nút, bạn có thể tạo một bản sao của điều khiển người dùng này và đặt nó vào lưới hoặc bất kỳ điều khiển nào khác bằng cách sử dụng thuộc tính SetValue của điều khiển.

Nếu bạn chưa quen với WPF và MVVM, hãy đọc blog này để hiểu điều này.

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

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

+0

Cũng bị chặn trong văn phòng của chúng tôi. Sẽ truy cập sau. Cảm ơn. – spiritqueen

Các vấn đề liên quan