Tôi muốn hiển thị một biểu tượng/hình ảnh khác nhau tùy thuộc vào giá trị enum. Ví dụ, nếu tôi đã có enum sau:Làm cách nào để hiển thị các biểu tượng Enum khác nhau bằng cách sử dụng XAML?
public enum UploadStatus
{
Unknown = 0,
WaitingToUpload = 10,
Uploading = 20,
Uploaded = 30,
UploadFailed = 40
}
Tôi muốn viết XAML mà trông giống như sau:
...
<EnumImage Value="{Binding Path=CurrentStatus}">
<EnumImageItem Value="Unknown" Image="/images/unknown.png" />
<EnumImageItem Value="WaitingToUpload" Image="/images/clock.png" />
<EnumImageItem Value="Uploading" Image="/images/upload.png" />
<EnumImageItem Value="Uploaded" Image="/images/tick.png" />
<EnumImageItem Value="UploadFailed" Image="/images/error.png" />
</EnumImage>
...
tôi đã tìm thấy nhiều bài viết cho thấy IValueConverters tùy chỉnh, nhưng những giải pháp đó không phù hợp với mô hình XAML.
Bất kỳ gợi ý hay đề xuất nào?
Giá trị nào chuyển đổi không "phù hợp với mô hình XAML" theo cách nào? – AnthonyWJones
Vâng, tôi tin rằng các đường dẫn hình ảnh sẽ vẫn còn trong XAML, không phải trong mã C#. Trong các giải pháp IValueConverter tôi có vẻ, bộ chuyển đổi chịu trách nhiệm lập bản đồ giá trị enum cho một đường dẫn hình ảnh. Tôi thấy nhiều lợi ích hơn trong việc giữ nó trong XAML. –
ValueConverter tồn tại vì lý do chính xác này. Nó có nghĩa là để có một kiểu dữ liệu và chuyển đổi cho xem. – Stephan