{"id":58146,"date":"2023-05-01T10:21:50","date_gmt":"2023-05-01T08:21:50","guid":{"rendered":"https:\/\/ar3dp.de\/docs\/programmieren\/net-maui-basis-applikation-app-template\/hosting-appbuilder\/"},"modified":"2023-05-01T10:21:50","modified_gmt":"2023-05-01T08:21:50","slug":"hosting-appbuilder","status":"publish","type":"docs","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/hosting-appbuilder\/","title":{"rendered":"Hosting &#038; AppBuilder"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Die App wird in der <strong>AppHostBuilderExtension<\/strong> konfiguriert, welche Ihr unter &#8220;Hosting&#8221; im Projektordner findet. Um alle Features der App-Vorlage zu initialisieren, muss die Methode &#8220;ConfigureApp&#8221; in der &#8220;MauiProgram.cs&#8221; mit angeh\u00e4ngt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following methods are executed.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">public static MauiAppBuilder ConfigureApp(this MauiAppBuilder builder)\n{\n    builder\n        .RegisterDispatcher()\n        .RegisterMainViewModels()\n        .RegisterPageViewModels()\n        .RegisterModalViewModels()\n        .RegisterSettingsViewModels()\n        .RegisterMainViews()\n        .RegisterPageViews()\n        .RegisterModalViews()\n        .RegisterSettingsViews()\n        .RegisterNavigationRoots();\n    ;\n    return builder;\n}<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In the MauiProgram it looks like this.<\/p>\n\n\n\n<div class=\"wp-block-codemirror-blocks-code-block code-block\"><pre class=\"CodeMirror\" data-setting=\"{&quot;showPanel&quot;:true,&quot;languageLabel&quot;:&quot;language&quot;,&quot;fullScreenButton&quot;:true,&quot;copyButton&quot;:true,&quot;mode&quot;:&quot;clike&quot;,&quot;mime&quot;:&quot;text\/x-csharp&quot;,&quot;theme&quot;:&quot;material&quot;,&quot;lineNumbers&quot;:false,&quot;styleActiveLine&quot;:false,&quot;lineWrapping&quot;:false,&quot;readOnly&quot;:true,&quot;fileName&quot;:&quot;&quot;,&quot;TrpContentRestriction&quot;:{&quot;restriction_type&quot;:&quot;exclude&quot;,&quot;selected_languages&quot;:[],&quot;panel_open&quot;:true},&quot;language&quot;:&quot;C#&quot;,&quot;maxHeight&quot;:&quot;400px&quot;,&quot;modeName&quot;:&quot;csharp&quot;}\">public static MauiApp CreateMauiApp()\n{\n    MauiAppBuilder builder = MauiApp.CreateBuilder();\n    builder\n        .UseMauiApp&lt;App&gt;()\n        .UseMauiCommunityToolkit()\n        .ConfigureSyncfusionCore()\n        .InitializeSharedMauiStyles()\n        .InitializeSharedSyncfusionStyles()\n        .ConfigureApp()\n        \/\/...\n        ;\n        \/\/...\n}<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Singleton &amp; Transient<\/h3>\n\n\n\n<p class=\"wp-block-paragraph translation-block\">Basically, we differentiate between the two types of registration mentioned. All <strong>ViewModels<\/strong> and <strong>Views<\/strong> that are or should be available over the app lifecycle are registered as a <strong>singleton<\/strong>. This applies to all main pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alle anderen Elemente, welche nur solange &#8220;Leben&#8221; sollen, wie diese ben\u00f6tigt werden, werden als <strong>Transient<\/strong> registriert. All solche Elemente werden, sobald ben\u00f6tigt, erstellt und nach Gebrauch wieder freigegeben (GC).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For new View &amp; ViewModels<\/h3>\n\n\n\n<p class=\"wp-block-paragraph translation-block\">Important! If you add new Views and\/or ViewModels, you must configure or make them known in the <strong>AppHostBuilderExtension<\/strong>. Depending on the type, the following methods are available for this.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"translation-block\"><strong>RegisterMainViewModels \/ RegisterMainViews:<\/strong> For all main page\/viewmodels<\/li>\n\n\n\n<li><strong>RegisterPageViewModels \/ RegisterPageViews<\/strong>: F\u00fcr alle Views &amp; ViewModels im &#8220;Pages&#8221;-Ordner<\/li>\n\n\n\n<li><strong>RegisterModalViewModels \/ RegisterModalViews: <\/strong>F\u00fcr alle Views &amp; VIewModels im &#8220;Modal&#8221;-Ordner<\/li>\n\n\n\n<li><strong>RegisterSettingsViewModels \/ RegisterSettingsViews:<\/strong> F\u00fcr alle Views &amp; ViewModels im &#8220;Settings&#8221;-Ordner<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Die App wird in der AppHostBuilderExtension konfiguriert, welche Ihr unter &#8220;Hosting&#8221; im Projektordner findet. Um alle Features der App-Vorlage zu initialisieren, muss die Methode &#8220;ConfigureApp&#8221; in der &#8220;MauiProgram.cs&#8221; mit angeh\u00e4ngt werden. Dabei werden folgende Methoden ausgef\u00fchrt. Im MauiProgramm sieht das dann wie folgt aus. Singleton &amp; Transient Grunds\u00e4tzlich unterscheiden wir hier zwischen den zwei genannten&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":57992,"menu_order":2,"comment_status":"open","ping_status":"closed","template":"","meta":{"_featured":false,"_is_vendor_doc":"0","footnotes":""},"doc_tag":[],"class_list":["post-58146","docs","type-docs","status-publish","hentry"],"comment_count":0,"_links":{"self":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/comments?post=58146"}],"version-history":[{"count":1,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58146\/revisions"}],"predecessor-version":[{"id":58961,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58146\/revisions\/58961"}],"up":[{"embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/57992"}],"next":[{"title":"Navigation","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/navigation\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58136"}],"prev":[{"title":"Getting started","link":"https:\/\/ar3dp.de\/en\/docs\/programmieren\/net-maui-basis-applikation-app-template\/erste-schritte\/","href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/docs\/58098"}],"wp:attachment":[{"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/media?parent=58146"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/ar3dp.de\/en\/wp-json\/wp\/v2\/doc_tag?post=58146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}