WPF Toolkit CEのプロパティグリッドを使用します。 オブジェクトをコレクションに追加すると、開いたダイアログにコンボボックスが表示され、追加する新しいタイプを選択します。ドキュメントでは、NewItemTypesAttribute
を読みました。 この属性は、選択したオブジェクトのコレクションプロパティ(つまり、IList)を飾って、CollectionControlでインスタンス化を許可するタイプを制御できます。WPF Toolkit Community Editionプロパティグリッド:コレクションエディタの新しいアイテムタイプ
しかし、私はそれを働かせることはできません。この場合
namespace TestPropertyGrid
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyObject myObj = new MyObject();
this.PGrid.SelectedObject = new MyObject();
}
}
public class MyObject
{
[NewItemTypes(typeof(MyBaseObj), typeof(MyObj1))]
[Editor(typeof(CollectionEditor), typeof(CollectionEditor))]
public ArrayList ListOfObjects { get; set; } = new ArrayList();
}
public class MyBaseObj
{
}
public class MyObj1
{
}
}
を「選択型」のリストが空である:ここでは は、私が試した最後の変種です。
ArrayList
の代わりにList<object>
を使用しようとしましたが、リストにはオブジェクト型のみが含まれています。
はで初期状態私はList<MyBaseObj>
を望んでいた(抽象クラスになります)との両方がMyBaseObj
から継承するタイプMyObj1
RESP MyObj2
のオブジェクトを追加します。ドキュメントサンプルと同じ:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Community myObj = new Community();
myObj.Members = new List<Person>();
this.PGrid.SelectedObject = myObj;
}
}
public class Community
{
[NewItemTypes(typeof(Man), typeof(Woman))]
[Editor(typeof(CollectionEditor), typeof(CollectionEditor))]
public IList<Person> Members { get; set; }
}
public class Person { }
public class Man : Person { }
public class Woman : Person { }
私は私の問題をはっきりと説明することができ、誰かが助けてくれることを願っています。ありがとうございました。