我有Dictionary<>
张图片和相应的密钥。
Dictionary<string, BitmapImage> ImageDictionary { get; set; }
Dictionary<>
以一些预定义图像开始,但随着应用程序的运行,用户可以向列表中添加更多图像和密钥。
我想在XAML中引用这些图像......
<Image Source="{Binding ImageDictionary['SomeImageKey']" />
这似乎是一个典型的要求,但在谷歌搜索的最后两个小时内,我似乎无法找到任何允许我添加到列表中的方法,并提供简洁的XAML语法来引用图像。
谢谢!
更新 ...感谢@Evk让我99%的路上!!
在包含Dictionary<string, BitmapImage>
的单例实例的另一个程序集中,我有以下内容:
namespace MyOtherAssembly {
public class ImageManager
{
private ImageManager()
{
KeyToImage = new Dictionary<string, BitmapImage>();
PopulateResourceImages();
}
private static readonly Lazy<ImageManager> _Instance = new Lazy<ImageManager>(() => new ImageManager());
public static ImageManager Instance { get { return _Instance.Value; } }
public Dictionary<string, BitmapImage> KeyToImage { get; set; }
public void PopulateResourceImages() { ... }
} }
PopulateResourceImages()
只加载预定义的图片。
现在在我的用户控件中,我添加了以下XAML命名空间:
xmlns:img="clr-namespace:MyOtherAssembly;assembly=MyOtherAssembly"
最后在XAML中,我添加了以下绑定:
<Image Source="{Binding Source={x:Static img:ImageManager.Instance}, Path=KeyToImage[RightArrowInCircle]}" Width="20" Height="20" />
其中RightArrowInCircle
是其中一个键。
所以我现在有一个图像字典,可以修改和添加到,并且具有合理的XAML语法。
有更好的方法吗??!
答案 0 :(得分:1)
你可以像这样绑定(只是省略引号):
<Image Source="{Binding ImageDictionary[SomeImageKey]}" />