2017-04-19 1 views
-2

Je crée un contrôle utilisateur. Voici un exemple de l'une de ses propriétés. Je voudrais que cette propriété soit située dans quelques catégories imbriquées.Propriété de contrôle utilisateur Winforms C++/CLI, attribut de catégorie imbriquée

public: 
    [Description("Text to display as Rick's Age"), Category("Tiny Rick")] 
    property String^ Rick_Age 
    { 
     String^ get() 
     { 
      return RicksAge_Label->Text; 
     } 
     void set(String^ newText) 
     { 
      RicksAge_Label->Text = newText; 
     } 
    } 

Pour cet exemple, la propriété Variable_Text se trouve dans la catégorie Tiny Rick. Comment est-ce que je peux faire apparaître la catégorie Tiny Rick dans une autre catégorie? Je voudrais avoir une sorte d'organisation à plusieurs niveaux de propriétés. Par exemple:

  • Catégorie: Special Properties
    • Catégorie: Tiny Rick
      • Propriété: Rick_Age
    • Catégorie: Morty
      • Propriété: Morty_Age
      • Propriété: Morty_Size
  • Catégorie: Other Properties
    • Catégorie: Jerry
      • Propriété: Jerry_Age
      • Propriété: Jerry_Employed
    • Catégorie: Courier Flaps
      • Propriété: Item_to_Ship

EDIT-1: Voici un exemple de propriétés imbriquées. C'est le panneau de propriétés pour un contrôle de bouton nouvellement placé (pas un contrôle utilisateur personnalisé). Je comprends que cela ne prouve pas la possibilité d'appliquer une fonctionnalité similaire dans un contrôle utilisateur. C'est simplement une bonne illustration de ce que j'essaie d'accomplir. Les images indiquent la progression de l'accès à la propriété X:

collapsed

Open1

Open2

Open3

EDIT-2: Considérant ce que tout peut être fait avec les contrôles utilisateur et propriétés de temps de conception personnalisée (voir this project), je suis enclin croire que mon but est réalisable.Cette image est du lien précédent: enter image description here

+1

Je ne suis pas sûr que les propriétés de contrôle prennent en charge le concept de catégories imbriquées. Avant de demander "comment je fais ça?", Êtes-vous sûr que c'est possible? Avez-vous un exemple de cela fait avec un autre contrôle, utilisateur ou autre? –

+1

Sauf si vous utilisez Win32/MFC interop, vous ne devez pas utiliser C++/CLI pour le développement de l'interface graphique; C# pourrait être un meilleur choix. –

+0

@DavidYaw Grande question. J'ai mis à jour ma question pour refléter ma réponse. –

Répondre

1

Je ne pense pas que ce soit possible.

En regardant à travers le .Net Reference Source à tous les endroits où la classe CategoryAttribute est instancié (en d'autres termes, tout le temps que Category est utilisé comme un attribut sur une propriété (faites défiler jusqu'à « 422 instanciations de CategoryAttribute » dans le volet de gauche)) :

  • Il n'y a pas de cas multiples Category attributs sur une seule propriété (qui est refusé pour l'CategoryAttribute de toute façon).
  • Il n'y a aucune catégorie avec une hiérarchie dans leur texte de catégorie (par exemple, il n'y a pas de [Category("Special Properties\\Morty")]).

Je pense que vous n'avez pas de chance.