记一次Microsoft.Toolkit.Mvvm(MVVM Toolkit)的兼容性问题


今天在目标框架为framework4.6.1的wpf项目中使用Microsoft.Toolkit.Mvvm7.1.1出现了一个比较怪异的编译时错误,前提是打开了 工具>选项>环境>预览功能>适用于NET Framework的新版WPF XAML设计器(需要重启) 。Visual Studio 2019 (16.10以上版本)

相关链接:https://docs.microsoft.com/zh-cn/visualstudio/xaml-tools/xaml-design-time-sample-data?view=vs-2019

一、定义如下类:

public class Class1 : Microsoft.Toolkit.Mvvm.ComponentModel.ObservableObject
{
        
}

然后在xaml文件中使用它:

<Window.Resources>
        <local:Class1 x:Key="bbb"/>
</Window.Resources>

标红处报错: XDG004无法分配指定的值。应是以下类型:"Object"  。该错误导致当前xaml设计器无法正常显示,但启动程序的话,正常运行。

二、将xaml代码改为:

<Window.DataContext>
        <local:Class1 x:Name="aaa"/>
</Window.DataContext>

标红处报错报错: XDG004无法分配指定的值。应是以下类型:"Object XDG004附加的属性"Name"只能应用到从"Obiect"派生的类型。 。同样导致当前xaml设计器无法正常显示,启动程序的话,正常运行。

三、修改了 Class1 类,将其父类删除后程序没有报错。

public class Class1
{
        
}

 

四、将 Microsoft.Toolkit.Mvvm.ComponentModel.ObservableObject 重新作为 Class1 类的父类,并将 工具>选项>环境>预览功能>适用于NET Framework的新版WPF XAML设计器(需要重启) 关闭。

将 工具>选项>环境>预览功能>适用于NET Framework的新版WPF XAML设计器(需要重启) 关闭后,程序不再报错。

五、另创一个基于.net 5的wpf项目如上进行实验,错误全部消失了

 

总结:.net framework框架下的wpf项目使用Microsoft.Toolkit.Mvvm,在Visual Studio 2019 (16.10以上版本)开启工具>选项>环境>预览功能>适用于NET Framework的新版WPF XAML设计器(需要重启)功能时,会出现兼容性问题。不清楚问题产生的原因与是否还有其它隐患。

 

相关链接:https://docs.microsoft.com/zh-cn/windows/communitytoolkit/mvvm/introduction


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM