2012-11-23 34 views
6

Khi chúng tôi liên kết SelectedItem của combobox với thuộc tính, thông thường nó sẽ sử dụng phương thức Equals của kiểu đối tượng để xác định mục đã chọn sẽ được hiển thị trong khung nhìn ComboBox. (xem this question, ví dụ)So sánh bình đẳng tùy chỉnh cho WPF ComboBox

Có thể có sự so sánh của riêng tôi cho điều này, mà không cần phải sửa đổi phương thức equals của lớp? Lý do tôi không muốn sửa đổi phương thức trực tiếp là vì lớp này cũng được sử dụng cho logic nghiệp vụ và tôi không muốn so sánh bình đẳng của mình ảnh hưởng đến những thứ khác sử dụng cùng một lớp

+0

bạn có thể tạo lớp khác có nguồn gốc từ lớp chính không? –

+0

@DJ nhưng tôi không thể kiểm soát việc triển khai nào được chuyển đến viewmodel của tôi –

+0

Điều gì về việc sử dụng 'SelectedIndex' thay vì' SelectedItem'. Sau đó, bạn có thể đặt logic so sánh tùy chỉnh của mình để tìm chỉ mục của mục trong mô hình xem. – Lubo

Trả lời

1

Lý do tôi không Không muốn sửa đổi phương thức trực tiếp là vì lớp này cũng được sử dụng cho logic nghiệp vụ và tôi không muốn so sánh bình đẳng của mình ảnh hưởng đến những thứ khác sử dụng cùng một lớp

Điều này thường chỉ ra một trình bao cần thiết :

public class Wrapper<T> 
{ 
    public override string ToString() { ... } 

    public override bool Equals(object obj) { ... } 

    public T UnderlyingRecord { get; set; } 
} 

Bằng cách này bạn có thể thực hiện như bình thường và chỉ xem sẽ sử dụng đối tượng bao bọc.

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