请参阅下面的VS2013更新。KeyedCollection和d:DataContext设计错误
当使用类作为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; }
}
}
似乎也存在于VS2015中 – Stefan 2015-11-24 09:43:17