2010-07-18 19 views
6

Tôi có một hộp tổ hợp được liên kết với một bộ sưu tập, vì vậy người dùng có thể chọn một trong các mục. Càng xa càng tốt.Tôi có thể có một ValueConverter trong ViewModel của mình không?

Nội dung của hộp tổ hợp được điều khiển bởi mục đó, mà còn bởi giá trị trong chế độ xem của tôi. Hãy tưởng tượng giá trị trong viewmodel của tôi là ngôn ngữ, tôi có từ điển mô tả bằng ngôn ngữ trong mục bị ràng buộc của tôi, và tôi muốn hiển thị đúng giá trị.

Tôi nên làm như thế nào?

Trả lời

1

Tạo bộ sưu tập quan sát trong chế độ xem của loại mục. Liên kết nguồn cấp dữ liệu của chế độ xem của bạn với bộ sưu tập có thể quan sát này.

public class Item 
{ 
public String description {get;set;} 
public String language {get;set;} 
public override ToString() 
{ 
     return description; 
} 
} 

Mục đã chọn cũng sẽ bị ràng buộc vào thuộc tính của loại Mục.

Ghi đè ToString hiển thị mô tả.

Mục được chọn phù hợp sẽ có tham chiếu đến thuộc tính đối tượng đã chọn nơi bạn có thể lấy ngôn ngữ.

2

Đây là ví dụ điển hình về lý do ViewModel tồn tại - bạn muốn có logic phụ thuộc vào trạng thái tầm thường trong chế độ xem cũng như mô hình chính.

Hãy tưởng tượng bạn đang viết một bài kiểm tra đơn vị để chạy với Chế độ xem đối với hành vi này. Bạn sẽ cần ViewModel để có một thuộc tính được ánh xạ tới mục đã chọn. ViewModel cũng sẽ có một thuộc tính khác thay đổi theo mục đã chọn này cũng như giá trị khác trong ViewModel mà bạn đã đề cập.

Tôi nghĩ rằng đây là cách tiếp cận hướng thử nghiệm để thiết kế ViewModel - nếu bạn không thể viết một bài kiểm tra đơn vị để đánh giá nó thì bạn chưa có sự kết hợp giữa giao diện tiểu bang và xuất bản.

Vì vậy, có, ViewModel có thể giải quyết vấn đề và nếu bạn đẩy tất cả trạng thái xuống vào nó, bạn có thể thực hiện thống nhất trong ViewModel.

+0

Andy, đây là giải pháp tôi cảm thấy thoải mái nhất, nhưng tôi không thể tìm ra cách tốt nhất để làm điều đó. Tôi có phải thực hiện một loại tùy chỉnh cho combobox để liên kết với, và khi tôi được thông báo về một thay đổi, tôi nên đẩy giá trị trở lại mô hình? –

+0

Bạn có muốn toàn bộ bộ mô tả cho combo để thay đổi theo giá trị khác này không? –

+0

Xin lỗi Andy, tôi đã bỏ lỡ bình luận của bạn. Có, tôi cần toàn bộ bộ mô tả để thay đổi. Tôi có thể nghĩ ra một vài cách để làm điều đó, không ai trong số họ đặc biệt tốt :) –

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