首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用MEF - Binding从源代码向视图注入视图模型不起作用- WPF

在WPF中,使用MEF(Managed Extensibility Framework)进行依赖注入时,出现了从源代码向视图注入视图模型不起作用的问题。下面是对这个问题的完善且全面的答案:

问题描述:

在WPF应用程序中,使用MEF进行依赖注入时,从源代码向视图注入视图模型的操作没有生效。

解决方案:

  1. 确保已正确配置MEF:
    • 在应用程序的主入口点处,使用CompositionContainer创建一个容器,并将需要注入的部件(包括视图模型)添加到容器中。
    • 使用CompositionBatch将需要注入的部件添加到容器中。
    • 使用ComposeParts方法将容器中的部件组合起来。
  2. 检查导入属性的声明:
    • 确保在需要注入的视图模型属性上使用[Import]属性标记。
    • 确保属性的类型与需要注入的部件类型匹配。
  3. 检查导入属性的访问修饰符:
    • 确保导入属性的访问修饰符为public,以便MEF能够访问并注入该属性。
  4. 确保视图模型已被正确导出:
    • 在视图模型类上使用[Export]属性标记,将其标记为可被MEF导出的部件。
    • 确保导出的部件类型与需要注入的属性类型匹配。
  5. 检查MEF的初始化时机:
    • 确保在应用程序启动时,MEF已经完成初始化,并且容器中的部件已经被组合起来。
    • 可以在应用程序的主入口点处进行MEF的初始化操作。
  6. 检查XAML中的绑定:
    • 确保在XAML中正确地绑定了视图模型属性。
    • 确保绑定的路径和源对象正确。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云提供了多种云计算相关产品,包括云服务器、云数据库、云存储等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多产品信息和服务。

请注意,本答案仅提供了解决问题的一般性建议,并没有具体涉及到腾讯云的产品。如需了解更多关于腾讯云的产品和服务,请参考腾讯云官方网站上的相关文档和资料。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【愚公系列】2023年02月 .NET CORE工具案例-Caliburn.Micro的使用基于WPF的改造的MVVM案例

文章目录 前言 1.Caliburn.Micro是什么 2.Caliburn.Micro的主要功能 一、Caliburn.Micro的使用基于WPF的改造 1.项目介绍 2.安装软件包 3.改造App...启动项目 4.BootstrapperBase启动类 5.视图视图模型详解 5.1 index 5.1.1 视图模型 5.1.2 视图 5.2 Login 5.2.1 视图模型 5.2.2 视图...5.3 Login 5.3.1 视图模型 5.3.2 视图 ---- 前言 1.Caliburn.Micro是什么 Caliburn.Micro是一个微软开发的用于构建WPF,Silverlight...和Windows Phone应用程序的MVVM(模型-视图-视图模型)框架。...WPF的改造 1.项目介绍 HelloWorld:框架的搭建、容器注入相关 HelloWorld.Core;放置数据模型,即mvvm中的M HelloWorld.ViewModels:模型视图,即VM

1.1K20
  • C# 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism

    --概述 这个项目演示了如何在WPF使用各种Prism功能的示例。如果您刚刚开始使用Prism,建议您第一个示例开始,按顺序列表中开始。每个示例都基于前一个示例的概念。...the Shell 创建一个基本的引导程序和shell Regions 创建一个区域 Custom Region Adapter 为StackPanel创建自定义区域适配器 View Discovery 使用视图发现自动注入视图...View Injection 使用视图注入手动添加和删除视图 View Activation/Deactivation 手动激活和停用视图 Modules with App.config 使用应用加载模块...Navigate to existing Views 导航期间控制视图实例 Passing Parameters 将参数视图/视图模型传递到另一个视图/视图模型 Confirm/cancel Navigation...使用IConfirmNavigationReqest界面确认或取消导航 Controlling View lifetime 使用IRegionMemberLifetime自动内存中删除视图 Navigation

    1.6K20

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    View Resolution (ViewModel-First) 视图分辨率(视图模型优先) 基础 使用CM时可能遇到的第一个约定与视图分辨率有关。...如果视图开始,则可能需要解析ViewModel。我们在这个场景中使用了与视图位置类似的命名约定。这由ViewModelLocator.LocateForViewType处理。...此属性获取您的ViewModel,使用ViewLocator定位视图,然后将它们一起传递到ViewModelBinder。绑定完成后,视图注入到定义属性的元素中。...ElementConvention定义了一个ApplyBinding Func,它接受视图模型类型、属性路径、属性信息、元素实例和约定本身。此Func负责使用提供的所有上下文信息在元素上创建绑定。...反过来设置自己的约定,可能会调用更多组合),然后获取视图并将其注入ContentControl。

    2.8K20

    C# WPF MVVM模式Prism框架零搭建(经典)

    ,这里我分别采用MEF和unity去做,不懂MEF的建议看看这位大牛的系列博文http://www.cnblogs.com/yunfeifei/p/3922668.html 02安装库 在nuget上安装...这时候,当我们要实现SelectedItemChanged、SelectionChanged等常用事件的时候,使用Expression Blend附带的System.Windows.Interactivity.dll...文件,它使用interaction trigger和InvokeCommandAction behavior来帮助我们直接绑定控件的事件。...主窗口,他的功能都是通过Module来实现的; Bootstrapper: 应用程序的入口点; Region: 内容区域,类似于一个占位符 Module: 真正实现业务功能的东西,是View,数据,模型组成的集合...; Prism是个非常强大的wpf mvvm模式框架,它使用依赖注入,控制反转容器来帮助我们解决团队合作的松耦合问题。

    2.7K10

    C# WPF MVVM开发框架Caliburn.Micro关于关于Actions⑤

    那么,这是哪里来的呢?由于我们使用模型优先的方法,当Caliburn.Micro(以下简称CM)创建视图使用ViewModelBinder将其绑定到ViewModel时,它为我们设置了此方法。...MEF配置与前面看到的相同,因此为了简洁起见,我省略了它。唯一改变的是视图的创建方式。...在这个场景中,我们只需覆盖OnStartup,自己实例化视图并将其设置为RootVisual(在WPF的情况下为callshow)。...将约定应用于视图。字符串值用于IoC容器解析实例。(在根节点上使用,如Window/UserControl/Page。)...将约定应用于视图。(在DataTemplate内部使用。) View.Model ViewModel First–定位指定VM实例的视图并将其注入内容站点。

    2.1K20

    .NET Core 3 WPF MVVM框架 Prism系列之导航系统

    我们看到这里是不是一开始想象到使用WPF带有的导航系统,通过Frame和Page进行页面跳转,然后通过导航日志的GoBack和GoForward实现后退和前进,其实这是通过使用Prism的导航框架实现的...这种可以同时显示多个活动视图的,可以通过Region的Add和Remove方法控制增加活动视图和失效视图,而当视图的KeepAlive为false,Region的Activate另外一个视图时,则该视图的实例则会去除出区域...导航并行使用,这是prism官方文档也支持的,因为prism的导航系统是基于区域的,不依赖于wpf,不过更推荐于单独使用prism的导航系统,因为在MVVM模式下更灵活,支持依赖注入,通过区域管理器能够更好的管理视图...View,更能适应复杂应用程序需求,wpf导航系统不支持依赖注入模式,也依赖于Frame元素,而且在导航过程中也是容易强依赖View部分,下一篇将会讲解Prism的对话框服务 六.源码  最后,附上整个...demo的源代码:PrismDemo源码

    2.3K30

    Knockout.Js官网学习(简介)

    MVP 里的M 其实和MVC里的M是一个,都是封装了核心数据、逻辑和功能的计算关系的模型,而V是视图(窗体),P就是封装了窗体中的所有操作、响应用户的输入输出、事件等,与MVC里的C差不多,区别是MVC...WPF与IView层的沟通,最佳的手段是使用Binding,当然,也可以使用事件;Presenter层要实现IView,多态机制可以保证运行时UI层显示恰当的数据。...MVVM的优点 MVVM已在微软WPF/Silverlight/WP7中广泛应用,和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。...这种双向绑定(Two-Way Binding)的概念,若使用传统做法得在ViewModel的属性修改事件将新值反映到某个显示/输入元素上,还得拦截输入元素的onChange事件,用程式将最新输入结果反应到...Knockoutjs的优点 1.声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上。

    2.3K20

    .NET Core 3 WPF MVVM框架 Prism系列之区域管理器

    View进行管理,同样的我们来看看官方给出的模型图: ?...二.区域创建与视图注入 我们先来看看我们之前项目的区域的划分,以及如何创建区域并且把View注入到区域中: ?...:注入了PatientDetail和SearchMedicine视图 ShowSearchPatientRegion:注入了ShowSearchPatient视图 在Prism中,我们有两种方式去实现区域创建和视图注入...,而ViewInjection方式则是可以手动控制注入视图和加载视图的时机(上述例子是通过Loaded事件),官方对于两者的推荐使用场景如下: ViewDiscovery: 需要或要求自动加载视图 视图的单个实例将加载到该区域中...五.源码  最后,附上整个demo的源代码:PrismDemo源码

    1.1K30

    WPF面试题-来自ChatGPT的解答

    在MVC模式中,视图和控制器之间的耦合度较高,导致视图的复用和测试变得困难。而MVVM模式通过引入视图模型,将视图模型解耦,使得视图可以更加独立地进行开发和测试。...开发者可以专注于视图模型的开发,而不需要关注它们之间的交互逻辑。 可重用性:MVVM模式鼓励将业务逻辑放在模型中,将视图逻辑放在视图模型中。...这种分离使得视图模型可以独立地进行开发和测试,并且可以在不同的应用程序中重用。视图模型可以被多个视图共享,从而提高了代码的重用性。...开发者可以独立地测试视图视图模型模型,而不需要依赖其他组件。这种可测试性提高了代码的质量和可靠性。...开发者可以通过更改视图模型中的数据来实现界面的更新,而不需要直接操作视图。 可重用的视图模型视图模型可以被多个视图共享,从而提高了代码的重用性。

    40830

    C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

    01 自定义引导程序 在上一部分中,我们讨论了Caliburn.Micro WPF应用程序的最基本配置,并演示了与操作和约定相关的两个简单功能。在这一部分中,我想进一步探讨Bootstrapper类。...因此,如果您的所有视图都与应用程序位于同一个程序集中,您甚至不必担心这一点。如果有多个包含视图的引用部件,则需要记住这是一个扩展点。...这些是我可能依赖于其他地方的部分,所以我希望它们可以用于注入。我还注册了容器本身(只是个人喜好)。 配置完容器后,我们需要告诉Caliburn.Micro如何使用它。这就是后面三个覆盖的目的。...您可以启动并运行MEF,还可以处理引导程序的其他一些关键扩展点。 当然,只要提供“GetInstance”和“GetAllInstances”的实现,就可以使用所需的任何IoC容器。...Caliburn.Micro 可以非Xaml主机使用Caliburn.Micro。

    95010

    【愚公系列】2023年11月 WPF控件专题 Polyline控件详解

    这些控件都是WPF中常见的标准用户界面元素。 自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。...使用Point结构体:point1="{x:Static Point}"。 使用Binding绑定到一个ViewModel属性:point1="{Binding Path=Point1}"。...然后,添加Polyline控件: 其中,Points属性通过数据绑定绑定到视图模型中的...接下来,创建一个名为MyViewModel的视图模型类,并在其中添加一个名为Points的ObservableCollection属性: public class MyViewModel : INotifyPropertyChanged...Invoke(this, new PropertyChangedEventArgs(propertyName)); } } 最后,在窗口的代码中,将视图模型实例化并将其设置为窗口的DataContext

    58221

    系统架构师-基础到企业应用架构-分层

    我想业务系统能够sqlserveroracle数据迁移,或反之。 这样在现有的项目结构方式,就无法满足,但是我们可以增加新的接口层来实现这个要求。 例如可以通过如下项目方式来组织: ?...Castle:Castle是针对.NET平台下的一个非常优秀的开源项目,数据访问框架 ORM到依赖注入容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务...同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、C ontrolTemplate等新特性...它立足于原有MVP框架并且把WPF的新特性揉合进去,以应对客户日 益复杂的需求变化。 MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。...使得在用户在视图上所做的操作都可以实时通知到视图模型,从而让视图模型对象有的模型进行正确的业务操作。

    1.3K20

    系统架构师-基础到企业应用架构-分层

    我想业务系统能够sqlserveroracle数据迁移,或反之。 这样在现有的项目结构方式,就无法满足,但是我们可以增加新的接口层来实现这个要求。 例如可以通过如下项目方式来组织: ?...Castle:Castle是针对.NET平台下的一个非常优秀的开源项目,数据访问框架 ORM到依赖注入容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务...同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、C ontrolTemplate等新特性...它立足于原有MVP框架并且把WPF的新特性揉合进去,以应对客户日 益复杂的需求变化。 MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。...使得在用户在视图上所做的操作都可以实时通知到视图模型,从而让视图模型对象有的模型进行正确的业务操作。

    99450

    Unity3D MVVM开源框架 Loxodon Framework

    我参考了WPF和Android的MVVM设计,所以在使用上以及类和接口的命名上与他们也都非常类似,我在项目中提供了大量的示例,很容易上手,对于熟悉MVVM的朋友入门门槛会更低。...在WPF中是使用XAML来配置UI的,所以数据绑定也在XAML中配置,在Unity3D中,因为考虑到性能问题以及与Unity3D中UGUI的耦合问题,我没有采用这种XML的配置方式,而是使用脚本绑定的方式...在这个框架我提供了视图视图模型的数据绑定、本地化、一个简单的对象容器、配置文件组件、线程工具组件、应用上下文和玩家上下文,异步线程和协程的任务组件等基本组件,同时还提供了一个UI视图的框架。...所有代码都基于面向对象面向接口的思路设计,几乎所有功能都可以自定义,很多接口我提供了多种实现,用户可以自由选择来使用,一般大众化的需求只需要使用我的默认实现即可,对于有特殊需求或者想扩展其他功能的用户,...array binding(普通的字典、列表绑定,不支持改变通知); Event binding(事件绑定); Unity3d's EventBase binding(Unity3d的事件绑定); Static

    5.1K10
    领券