silverlight – 如何仅使用XAML显示不同的枚举图标?

silverlight – 如何仅使用XAML显示不同的枚举图标?,第1张

概述我想根据枚举显示不同的图标/图像.例如,如果我有以下枚举: public enum UploadStatus { Unknown = 0, WaitingToUpload = 10, Uploading = 20, Uploaded = 30, UploadFailed = 40 } 我想编写看起来像这样的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范例.

任何指针或建议?

解决方法 这是一个值转换器,它维护“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显示不同的枚举图标?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存