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?

È stato utile?

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 di CloseDropDown si chiama.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top