从wpf中未引用的dll加载图像

本文关键字:dll 加载 图像 引用 wpf | 更新日期: 2023-09-27 17:57:35

我使用wpf开发应用程序,它可以使用多种语言。用户可以将语言dll放在Languages文件夹中,并动态加载程序。我想显示带有国家标志的程序集名称。我写了这个代码,但标志图像没有显示在组合框中。我该怎么做?

        var assemblies = dir.GetFiles("*.dll", SearchOption.AllDirectories);
        //for each found .dll we will create a model and set its properties and then add to list
        for (int i = 0; i < assemblies.Count(); i++)
        {
            var assemblyName = assemblies[i].Name.Substring(0, assemblies[i].Name.LastIndexOf("."));
            string packUri = string.Format("pack://application:,,,/{0};component/Image/flag.png", assemblyName);
            Uri uri = new Uri(packUri, UriKind.Absolute);
            BitmapImage image = new BitmapImage();
            image.BeginInit();
            image.CacheOption = BitmapCacheOption.OnLoad;
            try
            {
                image.UriSource = uri;
                image.EndInit();
            }
            catch (Exception ex)
            {
                var m = ex.Message;
            }
            CultureAssemblyModel model = new CultureAssemblyModel()
            {
                DisplayText = assemblies[i].Name.Split('.', '_')[2],
                Culture = assemblies[i].Name.Split('.', '_')[1],
                Name = assemblies[i].Name,
                XamlFileName = assemblies[i].Name.Substring(0,                      assemblies[i].Name.LastIndexOf(".")) + ".xaml",FlagImage=image
            };

从wpf中未引用的dll加载图像

我可能会尝试使用MEF来做这种事情。

我允许你:

  • 以一种非常简单的方式动态加载dll
  • 根据合约重新推荐您的类
  • 让您的用户(DLL的创建者)扩展您的应用程序

这可能会在加载部分简化很多,但在dll创建部分当然要复杂一些。