大佬教程收集整理的这篇文章主要介绍了silverlight – 如何仅使用XAML显示不同的枚举图标?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public enum UploadStatus { UnkNown = 0,WaiTingToUpload = 10,Uploading = 20,Uploaded = 30,UploadFailed = 40 }
我想编写看起来像这样的XAML:
... <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> ...
我发现许多帖子都提示自定义IValueConverters,但这些解决方案不适合XAML范例.
任何指针或建议?
[ContentProperty("Items")] public class EnumToObjectConverter : IValueConverter { public resourceDictionary Items { get; set; } public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culturE) { String key = Enum.GetName(value.GetType(),value); return Items[key]; } public object ConvertBACk(object value,System.Globalization.CultureInfo culturE) { throw new NotImplementedException("This converter only works for one way binding"); } }
请注意,这是非常通用的,它实际上将任何枚举类型的值映射到任何仲裁对象.这是它在Xaml中的用法: –
<Grid.resources> <local:EnumToObjectConverter x:Key="Icons"> <resourceDictionary> <BitmapImage x:Key="UnkNown" Urisource="/images/unkNown.png" /> <BitmapImage x:Key="WaiTingToUpload" Urisource="/images/clock.png" /> <BitmapImage x:Key="Uploading" Urisource="/images/upload.png" /> <BitmapImage x:Key="Uploaded" Urisource="/images/tick.png" /> <BitmapImage x:Key="UploadFailed" Urisource="/images/error.png" /> </resourceDictionary> </local:EnumToObjectConverter> </Grid.resources>
当枚举类型的绑定属性时,可以使用此转换器: –
<Image source="{Binding Status,Converter={Staticresource Icons}}" />
以上是大佬教程为你收集整理的silverlight – 如何仅使用XAML显示不同的枚举图标?全部内容,希望文章能够帮你解决silverlight – 如何仅使用XAML显示不同的枚举图标?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。