Tôi đã đọc this very related question here on SO, và nó đã vô cùng hữu ích vì các liên kết trong câu trả lời. Tôi chỉ gặp sự cố khi thực hiện bước bổ sung và làm cho tất cả hoạt động với mẫu MVVM.Databinding một enum để một ComboBox trong WPF + MVVM
Hãy nói rằng tôi có ViewModel của tôi, và nó (hoặc thậm chí các Model) có thể có một enum định nghĩa:
public enum MyTypes { Type1, Type2, Type3 };
Tôi muốn DataBind này vào một ComboBox trong GUI của tôi. Theo bài báo, tôi sẽ sử dụng một ObjectDataProvider để gọi phương thức Enum.GetValues () trên MyTypes. Vì vậy, tôi phải vượt qua MyTypes như một MethodParameter. Nhưng làm thế nào để bạn vượt qua loại? Tôi đã thử phương pháp khác nhau, giống như thêm tham chiếu đến namespace trong XAML:
<Window.Resources>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues">
<ObjectDataProvider.MethodParameters>
<!-- what goes here? it's totally wrong. -->
<my:MyTypes />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
Khá nhiều gì tôi đặt ở đó thậm chí sẽ biên dịch. Có ai biết cách vượt qua rào cản nhỏ này không?
Đó có thể là đơn giản nhất, nhưng tôi không nghĩ nó phù hợp vì DataContext của tôi là ViewModel của tôi, đó là cách tôi ràng buộc tất cả các lệnh của tôi và các combobox khác. Tôi có rất nhiều phần tử GUI khác chứ không chỉ một combobox. Đối với "tùy chọn khác", tôi nghĩ rằng đánh dấu tôi đăng trong câu hỏi của tôi là làm thế nào bạn tạo ra danh sách các giá trị từ enum? – Dave
có thể không có cách nào để làm điều đó bằng XAML thuần túy. và nó cho tôi thấy rằng nó được thực hiện dễ dàng hơn nhiều với C# thông thường. Tạo một thuộc tính trong ViewModel của chúng tôi gọi là MyTypesValues và liên kết với trong đó. ({Binding MyTypesValues}). – Andrey