如何从 MEF 组件提供 XAML 资源

2023-12-07

我有一个导入 MEF 组件,当导入向导打开时会动态加载该组件。一旦用户选择了她想要处理的导入类型,对导入向导对话框的控制就会传递给所选的导入组件。 当然,导入组件需要向向导对话框提供资源(例如DataTemplates)。目前这是通过以下方式实现的DataTemplateSelector由导入组件提供。他们访问本地ResourceDictionary导入组件的装配。

但正如你可以想象的,这很乏味:我必须为每个添加代码DataTemplate提供,WPF 不会自动使用该权利DataTemplate按类型ViewModel正在显示。

以前有人解决过这个问题吗?你们如何在插件环境中提供资源?

感谢您提前提供的任何帮助。

此致


我不知道在哪里找到这个小技巧,但您可以做的一件事是在编写外部程序集时动态导入资源字典。

在每个包含资源的程序集中,您可以通过代码隐藏和注释来导出一个或多个 ResourceDictionary 对象,如下所示:

[Export(typeof(ResourceDictionary))]
public partial class Resources : ResourceDictionary
{
    public Resources()
    {
        InitializeComponent();
    }
}

现在您需要一个组件来解决[ImportMany] IEnumerable<ResourceDictionary> resourceDictionaries并做这样的事情:

        //Merge exported resource dictionaries from all composed sources into the application
        foreach (var resourceDictionary in resourceDictionaries)
        {
            Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 MEF 组件提供 XAML 资源 的相关文章

  • WPF 中的填充弧

    I am trying to draw a figure something like this 我需要为每个弧段都有一个独特的元素 我可以根据需要处理事件并重新着色 我有点不确定如何在 WPF 中创建正确的几何图形 我可以根据圆的半径和与
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 将 WPF 控件类作为模板类

    有没有办法让 WPF UserControl 类成为具有模板类型的类 例如 public partial class MyControl UserControl 应该 public partial class MyControl
  • ComboBox.SourceUpdated 事件未触发

    我的视图中有两个组合框 它们都绑定到两个不同的ObservableCollections在 ViewModel 中 当 ComboBox1 中的选定项发生更改时 ComboBox2 将使用不同的集合进行更新 绑定工作得很好 但是 我希望第二
  • 应用程序启动时将焦点设置在 PasswordBox 上

    我无法将焦点设置在我的 PasswordBox 控件上是否有原因 C public Login InitializeComponent password Focus XAML
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • Keyboard.Focus(item) 和 item.Focus() 有什么区别?

    在 WPF 中 有两种方法将焦点设置到元素 您可以调用输入元素的 Focus 方法 也可以使用输入元素作为参数调用 Keyboard Focus first way item Focus alternate way Keyboard Foc
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • 为什么有时Task明显慢于Thread?

    我正在使用 MVVM 模式制作 WPF 应用程序 我发现有时任务明显慢于线程 例如 在测试 ViewModel 中 public void DoSomething Stopwatch stopwatch Stopwatch StartNew
  • WPF 自定义控件构造、触发器和事件

    我想构建一个新的自定义控件 我发现很少有教程可以给我一些如何实现这一目标的线索 据我了解 创建新的自定义控件总是通过扩展当前控件来完成 甚至可以扩展 例如 从层次结构的非常基本的级别进行控制 您甚至可以扩展 用户界面元素 框架元素 Cont
  • WPF 中可选择的 TextBlock 或带有格式化文本的 TextBox

    我遇到一种情况 我需要显示格式化文本 正常 粗体 突出显示 并且还应该是可选择的 以便用户可以复制文本 我使用了文本块 我可以使用内联内容流元素应用多种格式 但不幸的是它的文本不可选择 虽然文本框允许选择文本并复制到剪贴板 但它不允许我设置
  • 在 .NET Core 上通过 MEF 将参数传递给插件构造函数?

    我花了几个小时试图弄清楚如何通过 MEF System Composition 将参数传递给插件构造函数 但一切都无济于事 不用说 相关文档很少 查看源代码也没有帮助 这曾经非常容易做到 使用 CompositionHost Compose
  • 如何使用 MVVM 更改数据网格或列表视图中的内容

    我有一个 MainWindowViewModel DataContext 它公开不同的 ObservableCollections 带有 INotifyProperty 的 poco 对象的视图模型 从组合框中选择一个值后 我想单击一个加载
  • Wpf DataGrid通过DataBinding隐藏完整行

    是否有可能通过数据绑定隐藏 DataGrid 行 如果我有一个具有可见性属性的 BO 或 ViewModel 项目 是否可以声明一个绑定 以便在该属性设置为不可见时该行将被隐藏 反之亦然 应该可以通过RowStyle 像这样的东西
  • 读取WPF应用程序的程序集版本信息

    我正在阅读我的 wpf 应用程序的版本信息 但我没有得到我所写的正确版本AssemblyInfo cs文件 我的文件中有 assembly AssemblyVersion 0 1 001 assembly AssemblyFileVersi
  • SpeechSynthesizer 中的持续内存泄漏

    我开发了一个项目 我想发布它使用 c WPF 和 System Speech Synthesizer 对象 阻止该项目发布的问题是 每当调用 SpeakAsync 时 都会留下内存泄漏 并最终导致失败 我相信在使用这个物体后我已经正确清理了
  • 如何使用 RowDefinition Height * 获取网格的实际网格行高度

  • WPF (MVVM) 菜单中的互斥(且可绑定)复选框

    我试图找到一个在 WPF MVVM 应用程序的菜单中使用复选框的示例 该应用程序可以绑定到底层 ViewModel 类中的枚举 我有一个简单的例子 public class MyViewModel public MyViewModel co
  • 如何引用 dotNet Core 项目?

    我想将 dotNet Core 项目引用到 WPF 项目 我的 WPF 项目使用 v4 6 2 dotNet Framework 我的 dotNet Core 项目使用 v1 6 dotNet Standard 当我尝试引用它时 出现此错误

随机推荐

  • 快速替换 Win32_NetworkAdapter WMI 类以获取本地计算机的 MAC 地址

    这个问题的 TL DR 版本 WMIWin32 网络适配器课程包含我需要的信息 但速度太慢 在 Windows 上获取 MAC 地址 配置管理器错误代码和 PNPDeviceID 列信息的更快方法是什么 我需要检索连接的网络适配器的信息 以
  • Android使用intent设置壁纸

    我正在尝试制作壁纸应用程序 我可以使用壁纸管理器设置壁纸 但我想要的是 当我单击按钮时 应该打开一个新意图 这应该是设置设备壁纸的默认方式 当我们尝试将图像形式图库设置为壁纸时出现的屏幕 我们可以在其中选择图像的区域等 我已经凝视但找不到任
  • 运行 DataNucleus Enhancer 3.1.0-release 时出现 NullPointerException

    我从 DOS 运行 DataNucleus 增强器 如下所示 java cp C Users Chania workspace myproject war WEB INF classes C repo datanucleus full 3
  • 替换字符串中多个字符的最佳方法?

    我需要替换一些字符 如下所示 我的代码如下 但我想应该有更好的方法 有什么提示吗 strs strs replace strs strs replace 替换两个字符 我对当前答案中的所有方法以及一个额外的方法进行了计时 输入字符串为abc
  • MySQL 触发器用于在多次插入之前检查值

    我有一个表 存储最低和最高气温 海水温度 tinyint 和其他参数 由于我预计新的空气输入温度在 50 到 50 度之间 因此我在桌子上做了一个触发器 但首先我做了这个程序 begin if temp lt 50 or temp gt 5
  • 线程“JavaFX应用程序线程”中的异常java.lang.IllegalArgumentException:参数类型不匹配

    我必须制作一个数独游戏 当我尝试编码时 我发现了一个问题 我无法自行修复 我正在使用 SceneBuilder 如果您有任何想法来解决我的问题或一些建议 我将非常感激这是我的代码 FXML文档控制器 public class FXMLDoc
  • 如何让 Angular JS 在 Visual Studio 2015 解决方案中工作?

    我认为我的问题是我的机器或 Visual Studio 2015 上没有正确配置 Angular JS 但我不确定 我所知道的是 我的应用程序显示了一个空白页面 并且 Visual Studio 2015 无法识别 Angular 标签 有
  • 无法在动态链接库 KERNEL32.dll 中定位过程入口点“GetTickCount64”

    我创建了一个MFC app on 视窗8 using Visual Studio 2012 更新 3 它适用于视窗8 但是在视窗XP 它向我显示以下错误 The procedure entry point GetTickCount64 co
  • 甲骨文程序

    create or replace function gen sample func owner varchar2 return varchar2 as data t varchar2 10 cursor cur is select dat
  • 带数据库后端的 Spring Cloud 配置

    我正在尝试使用带有数据库后端的 Spring Cloud Config 设置一个 Spring Boot 项目 我的设置中有以下内容 application properties spring application name my ser
  • 从另一个静态方法调用特征静态方法(rust)

    您可以从特征中实现的另一个特征静态方法调用由类型实现的特征静态方法吗 例如 trait SqlTable fn table name gt String fn load id i32 gt Something Self table name
  • 控制器中角度平移的正确使用

    我在用着角度平移用于 AngularJS 应用程序中的 i18n 对于每个应用程序视图 都有一个专用控制器 在下面的控制器中 我将值设置为显示为页面标题 Code HTML h1 pageTitle h1 JavaScript contro
  • 如何在 Jumbotron 中居中表单 - Bootstrap 4

    我对 Bootstrap 完全陌生 如果这是一个愚蠢的问题 我很抱歉 我正在尝试将表格置于大屏幕的中心 除了形式之外 大屏幕中的所有内容都处于中心位置 我已经这样好几个小时了 就是想不通 这是我的代码
  • 根据另一列的值在 pandas 中创建新列

    我有一些关于不同个体性别的数据集 比如说 数据集如下所示 Male Female Male and Female Male Male Female Trans Unknown Male and Female 有些人认为自己是男性 有些人认为
  • @Autowired beans 在 spring 3.1 中使用 beans:profiles 后未加载

    我用过beans profiles在我的 xml 中是这样的
  • 警告“ScrollingHorizo​​ntally”已定义但从未使用 no-unused-vars

    有人可以帮忙解释这个错误吗 我尝试了几种不同的方法来编写 React Component 是不是少了点什么 Error 4 7 警告 ScrollingHorizo ntally 已定义但从未使用 no unused vars 成分 imp
  • 更新 PHP 中旧存储的 md5 密码以提高安全性

    目前 我有一个存储 md5 密码的数据库 几年前 这被认为比现在更安全 并且已经到了密码需要更安全的地步 我在这里读过很多关于crypt md5 hash bcrypt等 并开始考虑使用以下内容来比现在更好地 保护 密码 我将使用以下组合h
  • Java 中鸭子类型的示例是什么?

    我最近刚刚听说鸭子打字 我读了维基百科文章关于它 但我很难将这些示例翻译成 Java 这确实有助于我的理解 有人能给出 Java 中鸭子类型的清晰示例以及我如何使用它吗 Java 的设计不适合鸭子类型 您可能选择的方式是反思 public
  • 角度找不到上传的图像

    场景很简单 使用表单上传图片 如果上传成功 则刷新图库 我使用 Angular6 和ng 轮播 所有系统均在我的 Windows 10 笔记本电脑中本地设置 表单被上传 文本数据保存在数据库中 图像保存在节点 8 11 1 的文件中 我将图
  • 如何从 MEF 组件提供 XAML 资源

    我有一个导入 MEF 组件 当导入向导打开时会动态加载该组件 一旦用户选择了她想要处理的导入类型 对导入向导对话框的控制就会传递给所选的导入组件 当然 导入组件需要向向导对话框提供资源 例如DataTemplates 目前这是通过以下方式实