GUID 型の依存関係プロパティを持つカスタム アクティビティがあるとします。
カスタムデザイナーで、選択可能な値をコンボボックス(または自分のユーザーコントロール)のように表示したい(値はデータベースから取得する必要があります)。
これは可能ですか?
GUID 型の依存関係プロパティを持つカスタム アクティビティがあるとします。
カスタムデザイナーで、選択可能な値をコンボボックス(または自分のユーザーコントロール)のように表示したい(値はデータベースから取得する必要があります)。
これは可能ですか?
を作成する必要がありますUITypeEditor
。以下は、コンボボックス エディターのテンプレートです。
public class MyCustomEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider)
{
var editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
var list = new ListBox();
// Your code here to populate the list box with your items
EventHandler onclick = (sender, e) => {
editiorService.CloseDropDown();
};
list.Click += onclick;
myEditorService.DropDownControl(list);
list.Click -= onclick;
return (list.SelectedItem != null) ? list.SelectedItem : Guid.Empty;
}
}
アクティビティ内のあなたの所有物:-
[Editor(typeof(MyCustomEditor), typeof(UITypeEditor)]
public Guid MyGuidValue
{
get { return (Guid)GetValue(MyGuidValueProperty); }
set { SetValue(MyGuidValueProperty, value); }
}
Editor
属性は、このプロパティのカスタム エディターを作成したことを PropertyGrid に伝えます。 GetEditStyle
メソッドは、プロパティ グリッドにプロパティ値のドロップダウン ボタンを表示するように指示します。EditValue
メソッドを呼び出します。DropDownControl
、ドロップダウン領域に表示されるコントロールを受け取るメソッドでドロップダウンを表示するために使用されます。DropDownControl
までブロックされます。CloseDropDown