Sdílet prostřednictvím


Vytváření model Windows Forms systémem domény specifické pro jazyk

Model Windows Forms slouží k zobrazení stavu v modelu domény pro konkrétní jazyk (DSL), namísto použití diagramu DSL.Toto téma vás provede vazba formuláře systému Windows na linku DSL, použití Visual Studio vizualizace a modelování SDK.

DSL instance formuláře uživatelského rozhraní systému Windows a Průzkumníka modelů.

DSL-Wpf-2

Vytváření model Windows Forms DSL

Minimální WinForm Návrhář DSL šablona vytvoří minimální DSL, který můžete upravit tak, aby vyhovovala vašim požadavkům.

Vytvořit minimální DSL WinForms

  1. Vytvoření DSL z Minimální WinForm Návrhář šablony.

    V tomto návodu se předpokládá následující názvy:

    Název řešení a DSL

    FarmApp

    Obor názvů

    Company.FarmApp

  2. První příklad, který obsahuje šablonu vyzkoušet:

    1. Všechny šablony transformace.

    2. Sestavit a spustit vzorku (CTRL + F5).

    3. V experimentální instanci aplikace Visual Studio otevřete Sample soubor v ladění projektu.

      Všimněte si, že je zobrazen v ovládacím prvku model Windows Forms.

      Můžete také zobrazit prvky zobrazeny v Průzkumníku modelu.

      Přidejte některé prvky formuláře nebo Průzkumník a Všimněte si, že se zobrazí na jiné.

V instanci hlavní Visual Studio, oznámení o řešení DSL následující body:

  • DslDefinition.dslneobsahuje žádné prvky diagramu.Je to proto, že nebude DSL diagramy slouží k zobrazení modelů instance této DSL.Místo toho modelu vytvoří vazbu formuláře systému Windows a zobrazí prvky na formuláři modelu.

  • Navíc Dsl a DslPackage projektů, řešení obsahuje třetí projekt s názvem UI.UI projekt obsahuje definice ovládacího prvku model Windows Forms. DslPackagedepends on UI, and UI depends on Dsl.

  • V DslPackage projektu, UI\DocView.cs obsahuje kód, který zobrazí model Windows Forms ovládací prvek, který je definován v UI projektu.

  • UI Projekt obsahuje pracovní vzorek ovládacího prvku formuláře vázaného DSL.Však nebude fungovat po změně definice DSL.UI Projekt obsahuje:

    • Model Windows Forms třída s názvem ModelViewControl.

    • Soubor s názvem DataBinding.cs , který obsahuje další částečnou definici z ModelViewControl.Zobrazit její obsah v Průzkumníku, otevřete místní nabídku pro soubor a zvolte Zobrazení kódu.

Dd820642.collapse_all(cs-cz,VS.110).gifO projektu UI

Při aktualizaci souboru definice DSL definovat vlastní DSL, budete muset aktualizovat ovládací prvek v UI projektu zobrazit váš DSL.Na rozdíl od Dsl a DslPackage projekty vzorku UI projektu není generován z DslDefinitionl.dsl.Můžete přidat soubory .tt pro generování kódu, pokud chcete, přestože není podle tohoto návodu.

Aktualizaci definice DSL

Následující definice DSL se používá v tomto návodu.

DSL-Wpf-1

Aktualizace definice DSL

  1. DslDefinition.dsl otevřete návrhář DSL.

  2. Odstranit ExampleElement

  3. Přejmenujte ExampleModel domény třídu farmy.

    Mu další vlastnosti s názvem velikost typu Int32, a IsOrganic typu Boolean.

    [!POZNÁMKA]

    Pokud odstraníte třída kořenové domény a potom vytvořit nový kořenový adresář, budete muset obnovit vlastnost Editor kořenová třída.V DSL Explorer, vyberte Editor.V okně Vlastnosti nastavte Kořenová třída na hospodářství.

  4. Použití Třídy s názvem domény nástroj pro vytvoření tříd následující domény:

    • Pole – to poskytnout další domény vlastnost s názvem velikost.

    • Zvíře – nastavte do vlastnosti Dědičnost modifikátor na abstraktní.

  5. Použití Domény třídy nástroj vytvořit následující třídy:

    • Ovce

    • Kozy

  6. Použití dědičnost nástroje kozy a ovce dědit z zvíře.

  7. Použití vkládání nástroj vložit pole a zvíře pod hospodářství.

  8. Můžete chtít přehledné diagramu.Snížit počet duplicitních prvků, použijte Sem přenést podstrom příkaz v místní nabídce prvky v listu.

  9. Všechny šablony transformace v panelu nástrojů Průzkumníka řešení.

  10. Sestavení Dsl projektu.

    [!POZNÁMKA]

    Ostatní projekty nebudou v této fázi sestavit bez chyb.Chceme sestavit projekt Dsl, tak, aby jeho sestavení Průvodce zdrojem dat k dispozici.

Aktualizace projektu UI

Nyní můžete vytvořit nový uživatelský ovládací prvek zobrazující informace uložené v modelu DSL.Nejjednodušší způsob, jak připojit uživatelský ovládací prvek modelu je prostřednictvím datových vazeb.Datové vazby adaptéru typu s názvem ModelingBindingSource je speciálně navržena pro připojení DSL, linky bez VMSDK rozhraní.

Definovat DSL model jako zdroj dat.

  1. Na dat nabídce zvolte Zobrazit zdroje dat.

    Zdroje dat okno.

    Zvolte Přidat nový zdroj dat.Otevře se Průvodce konfigurací zdroje dat.

  2. Zvolte objekt, Další.

    Rozbalte Dsl, Company.FarmAppa vyberte hospodářství, což je kořenová třída modelu.Zvolte Dokončit.

    V Průzkumníku řešení UI projekt nyní obsahuje.Properties\DataSources\Farm.datasource

    Vlastnosti a vztahy třídy modelu se zobrazí v okně zdroje dat.

    DslWpf-3

Model připojit k formuláři

  1. V UI projektu, odstranit všechny existující soubory .cs.

  2. Přidat nový Uživatelský ovládací prvek soubor s názvem FarmControl se UI projektu.

  3. V Zdroje dat okno, klepněte na rozevírací nabídku na hospodářství, zvolte Podrobnosti.

    Ponechejte výchozí nastavení pro jiné vlastnosti.

  4. FarmControl.cs otevřete v návrhovém zobrazení.

    Přetáhněte hospodářství z okna zdroje dat do FarmControl.

    Zobrazí sadu ovládacích prvků se, jeden pro každou vlastnost.Vlastnosti vztahu negenerují ovládací prvky.

  5. Odstranit farmBindingNavigator.To také automaticky generováno FarmControl designer, ale není vhodný pro tuto aplikaci.

  6. Pomocí panelu nástrojů vytvořte dvě instance DataGridViewa jejich AnimalGridView a FieldGridView.

    [!POZNÁMKA]

    Alternativní krok je přetáhnout položky zvířat a pole z okna zdroje dat do ovládacího prvku.Tato akce vytvoří automaticky mřížky dat a vazby mezi zdroji dat a zobrazení mřížky.Nicméně tato vazba nefunguje správně pro DSL, linky.Proto je lepší vytvořit mřížky dat a vazby ručně.

  7. Pokud panel nástrojů není ModelingBindingSource nástroj, přidejte jej.V místní nabídce dat , vyberte Zvolit položky.V Zvolit položky nástrojů dialogovém okně vyberte ModelingBindingSource z Rozhraní.NET Framework kartě.

  8. Pomocí panelu nástrojů vytvořte dvě instance ModelingBindingSourcea jejich AnimalBinding a FieldBinding.

  9. Nastavit zdroje dat vlastnost každého ModelingBindingSource na farmBindingSource.

    Nastavit DataMember vlastnost zvířata nebo pole.

  10. Nastavit zdroje dat vlastnosti AnimalGridView na AnimalBindinga FieldGridView na FieldBinding.

  11. Upravte rozložení ovládacího prvku farmy do vašeho vkusu.

ModelingBindingSource je adaptér, který provádí několik funkcí, které jsou specifické pro DSL, linky:

  • Aktualizace jej zalomí v úložišti VMSDK transakci.

    Například když uživatel odstraní řádek z tabulky zobrazení dat, pravidelné vazby výsledkem bude výjimka transakce.

  • Zajišťuje, že když uživatel vybere řádek, okno Vlastnosti zobrazí vlastnosti odpovídající prvek modelu místo řádku dat mřížky.

Schéma vazeb mezi zdroje dat a zobrazení.

DslWpf4

K dokončení vazby DSL

  1. Přidejte následující kód v samostatném souboru kódu v UI projektu:

    using System.ComponentModel;
    using Microsoft.VisualStudio.Modeling;
    using Microsoft.VisualStudio.Modeling.Design;
    
    namespace Company.FarmApp
    {
      partial class FarmControl
      {
        public IContainer Components { get { return components; } }
    
        /// <summary>Binds the WinForms data source to the DSL model.
        /// </summary>
        /// <param name="nodelRoot">The root element of the model.</param>
        public void DataBind(ModelElement modelRoot)
        {
          WinFormsDataBindingHelper.PreInitializeDataSources(this);
          this.farmBindingSource.DataSource = modelRoot;
          WinFormsDataBindingHelper.InitializeDataSources(this);
        }
      }
    }
    
  2. V DslPackage projektu, úprava DslPackage\DocView.tt aktualizace následující definice proměnných:

    string viewControlTypeName = "FarmControl";
    

Testování DSL

Řešení DSL nyní můžete sestavit a spustit, i když chcete později další vylepšení.

Test DSL

  1. Sestavte a spusťte řešení.

  2. V experimentální instanci aplikace Visual Studio otevřete vzorku souboru.

  3. V FarmApp Explorer, otevřete místní nabídku na hospodářství kořenový uzel a zvolte Přidat nové kozy.

    Goat1 se zobrazí v zvířata zobrazení.

    Poznámka k upozorněníUpozornění

    Je nutné použít místní nabídku na farmy uzel, není zvířata uzlu.

  4. Vyberte hospodářství kořenový uzel a jeho vlastnosti.

    V zobrazení formuláře změnit název nebo velikost farmy.

    Když opustíte každé pole ve formuláři odpovídající změny vlastnost v okně Vlastnosti.

Zvýšení DSL

Chcete-li provést okamžitou aktualizaci vlastnosti

  1. V návrhovém zobrazení FarmControl.cs vyberte jednoduché pole, například jméno, velikost nebo IsOrganic.

  2. V okně Vlastnosti rozbalte vazby a otevřete (Upřesnit).

    V formátování a rozšířené vazby dialogovém okně pod Režim aktualizace zdroje dat, zvolte OnPropertyChanged.

  3. Sestavte a spusťte řešení.

    Ověřte, že při změně obsahu pole odpovídající vlastnosti farmy model změny okamžitě.

Umožňují přidat tlačítka

  1. V návrhovém zobrazení FarmControl.cs pomocí panelu nástrojů k vytvoření tlačítka na formuláři.

    Upravit název a text tlačítka, například Nové ovce.

  2. Kód tlačítka otevřete (například poklepáním).

    Upravte takto:

        private void NewSheepButton_Click(object sender, EventArgs e)
        {
          using (Transaction t = farm.Store.TransactionManager.BeginTransaction("Add sheep"))
          {
            elementOperations.MergeElementGroup(farm,
              new ElementGroup(new Sheep(farm.Partition)));
            t.Commit();
          }
        }
    
        // The following code is shared with other add buttons:
        private ElementOperations operationsCache = null;
        private ElementOperations elementOperations
        {
          get
          {
            if (operationsCache == null)
            {
              operationsCache = new ElementOperations(farm.Store, farm.Partition);
            }
            return operationsCache;
          }
        }
        private Farm farm
        {
          get { return this.farmBindingSource.DataSource as Farm; }
        }
    

    Je třeba vložit následující direktivu:

    using Microsoft.VisualStudio.Modeling;
    
  3. Podobná tlačítka přidáte pole a kozy.

  4. Sestavte a spusťte řešení.

  5. Ověřte, že přidá nové tlačítko položky.Nové položky se zobrazí v Průzkumníku FarmApp a v zobrazení mřížky příslušná data.

    Měly moci upravit název prvku v zobrazení mřížky dat.Také odstranit jej z ní.

DSL-Wpf-2

Dd820642.collapse_all(cs-cz,VS.110).gifO kódu přidat prvek

Pro nový prvek tlačítka následující alternativní kód je poněkud jednodušší.

    private void NewSheepButton_Click(object sender, EventArgs e)
    {
      using (Transaction t = farm.Store.TransactionManager.BeginTransaction("Add sheep"))
      {
        farm.Animals.Add(new Sheep(farm.Partition)); ;
        t.Commit();
      }
    }

Tento kód nenastaví výchozí název pro novou položku.Nespustí žádné vlastní korespondence, kterou jste definovali v Element korespondence směrnic linek, a nespustí žádné vlastní korespondence kód, který byl definován.

Proto doporučujeme použít ElementOperations k vytvoření nové prvky.Další informace naleznete v tématu Přizpůsobení vytvoření prvku a pohyb.

Viz také

Koncepty

Jak definovat domény specifické pro jazyk

Vizualizace a modelování SDK - jazyky specifické pro doménu

Další zdroje

Zápis kódu nastavit domény specifické pro jazyk