WPF 设计器错误值不能为空。参数名称:模式

use*_*131 5 c# wpf xaml objectdataprovider

我已经看到很多其他 ObjectDataProvider 问题,其中参数名称:类型、名称等不能为空。这些问题都是由于没有设置实际参数。据我所知,ObjectDataProvider 没有“模式”参数。以下标记生成“值不能为空。参数名称:模式”,并带有蓝色波浪线下划线。有时设计器会抛出异常并且无法加载,但是按下重新加载按钮会加载页面。代码和标记按预期编译和运行。这是什么原因造成的?

<Page.Resources>
...
    <ObjectDataProvider ObjectType="{x:Type local:AutoFillBox}" MethodName="RecUpdateOutput" x:Key="odpOutput">
        <ObjectDataProvider.MethodParameters>
            <sys:String>08:00</sys:String>
            <sys:String>12:00</sys:String>
            <sys:String>13:00</sys:String>
            <sys:String>18:00</sys:String>
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Page.Resources>
Run Code Online (Sandbox Code Playgroud)

类的一部分,要注意这不是自定义控件,只是一个糟糕的命名选择:

    public partial class AutoFillBox
    {
        public AutoFillBox()
        { //default }

        public string RecUpdateOutput(string time1, string time2, string time3, string time4)
        {
            //do stuff
        }
    }
Run Code Online (Sandbox Code Playgroud)

它是页面上唯一的 ObjectDataProvider,如果我删除第 4 个字符串参数,错误就会消失。此外,它调用的方法确实需要 4 个字符串,并返回一个字符串,因此我可以将其结果绑定到输出文本框。我在具有类似方法和签名的不同页面上使用了类似的 ObjectDataProvider,它也显示了相同的错误。这到底是怎么回事?

Visual Studio Ultimate 2013,Windows 7 Professional,面向 .net 4.5

小智 4

我不相信这是 VS 的 bug。尝试将属性 IsAsynchronous="True" 添加到 ObjectDataProvider,这应该可以消除设计器错误。该属性默认为 False,设计者将尝试在活动上下文中创建对象。这是链接:

对象数据提供者

为我工作。希望对你有帮助。