Я создал производный от окна класс (WindowAttachedCollection.MyWindow) и прикрепил свойство, которое содержит коллекцию этих окон. Но дизайнер WPF в VS 2010 пытается создать объект WindowInstance для каждого окна в этой коллекции и выдает исключение ArgumentException:
Значение «Microsoft.Expression.Platform.WPF.InstanceBuilders.WindowInstance» не относится к типу «WindowAttachedCollection.MyWindow» и не может использоваться в этой универсальной коллекции.
Имя параметра: значение
Так что ломается дизайнер WPF.
Есть ли способ отключить создание экземпляра WindowInstance вместо MyWindow в конструкторе WPF? В настоящее время мне не требуется поддержка во время разработки для этой коллекции MyWindow.
EDIT:
public static readonly DependencyPropertyKey DialogsPropertyKey = DependencyProperty.RegisterAttachedReadOnly(
"DialogsInternal",
typeof(ObservableCollection<MyWindow>),
typeof(MyWindow),
new PropertyMetadata(null));
public static readonly DependencyProperty DialogsProperty = DialogsPropertyKey.DependencyProperty;
public static void SetDialogs(UIElement element, ObservableCollection<MyWindow> value)
{
element.SetValue(DialogsPropertyKey, value);
}
public static ObservableCollection<MyWindow> GetDialogs(UIElement element)
{
var dialogs = (ObservableCollection<MyWindow>)element.GetValue(DialogsProperty);
if (dialogs == null)
{
dialogs = new ObservableCollection<MyWindow>();
SetDialogs(element, dialogs);
}
return dialogs;
}