请参阅下面的 VS2013 更新。
将类用作d:DesignInstance
公开 a 的 aKeyedCollection<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 开始,设计人员处理 a 的行为发生了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; }
}
}