attività di workflow
-
21-09-2019 - |
Domanda
Diciamo che ho un'attività personalizzata che ha una proprietà di dipendenza di tipo GUID.
che voglio nella mia progettazione personalizzata per mostrare come una casella combinata (o il mio UserControl) con possibili valori da selezionare (i valori dovrebbero proviene dal database).
È possibile?
Soluzione
È necessario creare un UITypeEditor
. Quanto segue è un modello per un editor di COMBOX: -
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;
}
}
sulla vostra proprietà nell'attività: -
[Editor(typeof(MyCustomEditor), typeof(UITypeEditor)]
public Guid MyGuidValue
{
get { return (Guid)GetValue(MyGuidValueProperty); }
set { SetValue(MyGuidValueProperty, value); }
}
- L'attributo
Editor
dirà il PropertyGrid che è stato creato un editor personalizzato per questa proprietà. - Il metodo
GetEditStyle
dell'Editor racconta la griglia delle proprietà per visualizzare una goccia tasto sul valore propery verso il basso. - Quando si fa clic la griglia delle proprietà chiama il metodo
EditValue
del editor personalizzato. - Il servizio montaggio viene utilizzato per visualizzare un menu a discesa con il metodo
DropDownControl
che richiede un controllo che deve essere visualizzate nella goccia superficie investita. - Il metodo
DropDownControl
bloccherà fino a quando il metodo di servizio editor diCloseDropDown
si chiama.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow