請參閱下面的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