XAMLを使用してWPFコントロールに追加できるカスタムクラスセットを作成しようとしています。カスタムWPFコレクションを作成するには?
私が抱えている問題は、コレクションにアイテムを追加することです。ここに私がこれまで持っているものがあります。
public class MyControl : Control
{
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
}
public static DependencyProperty MyCollectionProperty = DependencyProperty.Register("MyCollection", typeof(MyCollection), typeof(MyControl));
public MyCollection MyCollection
{
get { return (MyCollection)GetValue(MyCollectionProperty); }
set { SetValue(MyCollectionProperty, value); }
}
}
public class MyCollectionBase : DependencyObject
{
// This class is needed for some other things...
}
[ContentProperty("Items")]
public class MyCollection : MyCollectionBase
{
public ItemCollection Items { get; set; }
}
public class MyItem : DependencyObject { ... }
そしてXAML。
<l:MyControl>
<l:MyControl.MyCollection>
<l:MyCollection>
<l:MyItem />
</l:MyCollection>
</l:MyControl.MyCollection>
</l:MyControl>
例外は次のとおりです。 System.Windows.Markup.XamlParseException occurred Message="'MyItem' object cannot be added to 'MyCollection'. Object of type 'CollectionTest.MyItem' cannot be converted to type 'System.Windows.Controls.ItemCollection'.
は、いずれかが、私はこの問題を解決する方法を知っていますか?ありがとう
System.Collections.ObjectModelのDOM中心のコレクションクラスの1つから基本クラスを継承できますか?これらのクラス(Collection、KeyedCollectionなど)は、オーバーライド可能な追加/削除機能をサポートするため、DOMスタイルのインターフェイスを作成するのに最適です。私はこれがあなたの質問への直接的な反応ではないことを知っていますが、このようにしない理由があれば疑問に思っていますか? – Adrian