【问题标题】:WPF designer error Value cannot be null. Parameter name: patternWPF 设计器错误值不能为空。参数名称:图案
【发布时间】:2014-06-18 18:11:23
【问题描述】:

我见过很多其他 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>

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

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

        public string RecUpdateOutput(string time1, string time2, string time3, string time4)
        {
            //do stuff
        }
    }

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

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

【问题讨论】:

    标签: c# wpf xaml objectdataprovider


    【解决方案1】:

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

    ObjectDataProvider

    为我工作。希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      相关资源
      最近更新 更多