请参阅下面的VS2013更新。
当使用类作为d:DesignInstance
暴露一个KeyedCollection<TKey, TItem>
中,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; }
}
}
我无法提供设计时间形状与公开任何类KeyedCollection
。
任何想法是怎么回事?
更新:由于VS2013在处理一个设计师的行为KeyedCollection
已经改变(虽然还没有完全工作)。
上面的例子中不再产生错误。 然而,如果KeyedCollection
使用某些类型(例如接口)作为TItem
生成以下错误:
你调用的对象是空的。
请看下面的例子:
namespace Test
{
public partial class MainWindow : Window
{
public MainWindow() { InitializeComponent(); }
}
public class MyClass
{
public KeyedCollection<string, IInterface> MyCollection { get; private set; }
}
public interface IInterface
{
string Name { get; set; }
}
}