Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# KeyedCollection和d:DataContext设计错误_C#_Wpf_Visual Studio 2013_Datacontext_Design Time - Fatal编程技术网

C# KeyedCollection和d:DataContext设计错误

C# KeyedCollection和d:DataContext设计错误,c#,wpf,visual-studio-2013,datacontext,design-time,C#,Wpf,Visual Studio 2013,Datacontext,Design Time,请参阅下面的VS2013更新 当将类用作公开KeyedCollection的d:DesignInstance时,XAML设计器会发出以下警告: 提供的泛型参数的数量不等于 泛型类型定义 参数名称:实例化 可使用以下简单程序重现该问题: <Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http

请参阅下面的VS2013更新

当将类用作公开
KeyedCollection
d:DesignInstance
时,XAML设计器会发出以下警告:

提供的泛型参数的数量不等于 泛型类型定义

参数名称:实例化

可使用以下简单程序重现该问题:

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:Test"
        mc:Ignorable="d"  
        d:DataContext="{d:DesignInstance local:MyClass}" />

namespace Test
{
    public partial class MainWindow : Window
    {
        public MainWindow() { InitializeComponent(); }
    }

    public class MyClass
    {
        public KeyedCollection<string, object> SettingsModule { get; private set; }
    }
}

如果我没有误解你的问题,试着这样做

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication1"
    Width="800" Height="800"
    Title="MainWindow"   
    >
<Window.DataContext>
    **<local:MyClass />**
</Window.DataContext>
<Grid x:Name="LayoutRoot">
</Grid>

****

我希望这会有所帮助。

我已经能够通过在设计实例类型前面加上“d:type”这样的前缀来解决这个问题:

这似乎是VS2013设计器中的一个错误。我认为d:Type属性应该是
d:DesignInstance
属性的默认属性。另外,奇怪的是,我只在
KeyedCollection
类中看到了这个问题


此外,
d:DesignInstance
的用法有时使用不带前缀的“Type”。在本例中,如果省略了
d:Type
或缺少前缀,则会生成我提到的设计时错误。

我必须从DesignInstance类中删除默认构造函数,谢谢,但这并不能完全解决我的特定问题。我特别需要使用d:DataContext在XAML设计器中提供设计时数据形状。我以不同的方式设置了实际的DataContext。有关设计时数据的更多信息,请参见此处:VS2015中似乎也存在
<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication1"
    Width="800" Height="800"
    Title="MainWindow"   
    >
<Window.DataContext>
    **<local:MyClass />**
</Window.DataContext>
<Grid x:Name="LayoutRoot">
</Grid>
d:DataContext="{d:DesignInstance d:Type=local:MyClass}"