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范例.
任何指针或建议?
解决方法 这是一个值转换器,它维护“XAML范例”,即在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显示不同的枚举图标?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)