public blazorSessionService() { sessionNumber = ++sessionCounter; sessionTotal++; AnyUiDisplayContextHtml.addSession(sessionNumber); packages = new PackageCentral(); _packageCentral = packages; env = null; helper = new DispEditHelperEntities(); helper.levelColors = DispLevelColors.GetLevelColorsFromOptions(Options.Curr); // some functionality still uses repo != null to detect editMode!! repo = new ModifyRepo(); helper.editMode = editMode; helper.hintMode = hintMode; helper.repo = repo; helper.context = null; helper.packages = packages; stack17 = new AnyUiStackPanel() { Orientation = AnyUiOrientation.Vertical }; if (env?.AasEnv?.AdministrationShells != null) { helper.DisplayOrEditAasEntityAas(packages, env.AasEnv, env.AasEnv.AdministrationShells[0], editMode, stack17, hintMode: hintMode); } htmlDotnetThread = new Thread(AnyUiDisplayContextHtml.htmlDotnetLoop); htmlDotnetThread.Start(); }
public SelectAasEntityFlyout( PackageCentral packages, PackageCentral.Selector selector, string filter = null) { InitializeComponent(); this.packages = packages; this.selector = selector; theFilter = filter; }
public SelectAasEntityFlyout( PackageCentral packages, PackageCentral.Selector?selector = null, string filter = null) { InitializeComponent(); this.packages = packages; if (selector.HasValue) { DiaData.Selector = selector.Value; } if (filter != null) { DiaData.Filter = filter; } }
// // Constructor // public IntegratedConnectFlyout( PackageCentral packageCentral, string caption = null, double?maxWidth = null, string initialLocation = null, string initialDirectory = null, LogInstance logger = null) { InitializeComponent(); _packageCentral = packageCentral; _caption = caption; _maxWidth = maxWidth; _location = initialLocation; _initialDirectory = initialDirectory; _logger = logger; }
public void RebuildAasxElements( PackageCentral packages, PackageCentral.Selector selector, bool editMode = false, string filterElementName = null) { // clear tree displayedTreeViewLines = new List <VisualElementGeneric>(); // valid? if (packages.MainAvailable) { // generate lines, add var x = Generators.GenerateVisualElementsFromShellEnv( treeViewLineCache, packages.Main?.AasEnv, packages.Main, packages.MainItem?.Filename, editMode, expandMode: 1); foreach (var xx in x) { displayedTreeViewLines.Add(xx); } // more? if (packages.AuxAvailable && (selector == PackageCentral.Selector.MainAux || selector == PackageCentral.Selector.MainAuxFileRepo)) { var x2 = Generators.GenerateVisualElementsFromShellEnv( treeViewLineCache, packages.Aux?.AasEnv, packages.Aux, packages.AuxItem?.Filename, editMode, expandMode: 1); foreach (var xx in x2) { displayedTreeViewLines.Add(xx); } } // more? if (packages.Repositories != null && selector == PackageCentral.Selector.MainAuxFileRepo) { var pkg = new AdminShellPackageEnv(); foreach (var fr in packages.Repositories) { fr.PopulateFakePackage(pkg); } var x2 = Generators.GenerateVisualElementsFromShellEnv( treeViewLineCache, pkg?.AasEnv, pkg, null, editMode, expandMode: 1); foreach (var xx in x2) { displayedTreeViewLines.Add(xx); } } // may be filter if (filterElementName != null) { foreach (var dtl in displayedTreeViewLines) { // it is not likely, that we have to delete on this level, therefore don't care FilterLeavesOfVisualElements(dtl, filterElementName); } } // any of these lines? if (displayedTreeViewLines.Count < 1) { // emergency displayedTreeViewLines.Add( new VisualElementEnvironmentItem( null /* no parent */, treeViewLineCache, packages.Main, packages.Main?.AasEnv, VisualElementEnvironmentItem.ItemType.EmptySet)); } } // redraw treeViewInner.ItemsSource = displayedTreeViewLines; treeViewInner.UpdateLayout(); // select 1st if (displayedTreeViewLines.Count > 0) { displayedTreeViewLines[0].IsSelected = true; } }
public DisplayRenderHints DisplayOrEditVisualAasxElement( PackageCentral packages, ListOfVisualElementBasic entities, bool editMode, bool hintMode = false, bool showIriMode = false, VisualElementEnvironmentItem.ConceptDescSortOrder?cdSortOrder = null, IFlyoutProvider flyoutProvider = null, IPushApplicationEvent appEventProvider = null, DispEditHighlight.HighlightFieldInfo hightlightField = null) { // // Start // // hint mode disable, when not edit hintMode = hintMode && editMode; // remember objects for UI thread / redrawing this._packages = packages; this._theEntities = entities; _helper.packages = packages; _helper.highlightField = hightlightField; _helper.appEventsProvider = appEventProvider; // primary access var renderHints = new DisplayRenderHints(); if (theMasterPanel == null || entities == null || entities.Count < 1) { renderHints.showDataPanel = false; return(renderHints); } #if MONOUI var stack = ClearDisplayDefautlStack(); #else var stack = new AnyUiStackPanel(); #endif // create display context for WPF _displayContext = new AnyUiDisplayContextWpf(flyoutProvider, packages); _helper.levelColors = DispLevelColors.GetLevelColorsFromOptions(Options.Curr); // modify repository ModifyRepo repo = null; if (editMode) { // some functionality still uses repo != null to detect editMode!! repo = new ModifyRepo(); } _helper.editMode = editMode; _helper.hintMode = hintMode; _helper.repo = repo; _helper.showIriMode = showIriMode; _helper.context = _displayContext; // inform plug that their potential panel might not shown anymore Plugins.AllPluginsInvoke("clear-panel-visual-extension"); // // Test for Blazor // #if __test_blazor if (false) { var lab = new AnyUiLabel(); lab.Content = "Hallo"; lab.Foreground = AnyUiBrushes.DarkBlue; stack.Children.Add(lab); if (editMode) { var tb = new AnyUiTextBox(); tb.Foreground = AnyUiBrushes.Black; tb.Text = "Initial"; stack.Children.Add(tb); repo.RegisterControl(tb, (o) => { Log.Singleton.Info($"Text changed to .. {""+o}"); return(new AnyUiLambdaActionNone()); }); var btn = new AnyUiButton(); btn.Content = "Click me!"; stack.Children.Add(btn); repo.RegisterControl(btn, (o) => { Log.Singleton.Error("Button clicked!"); return(new AnyUiLambdaActionRedrawAllElements(null)); }); } } #endif var inhibitRenderStackToPanel = false; if (entities.ExactlyOne) { // // Dispatch: ONE item // var entity = entities.First(); // maintain parent. If in doubt, set null ListOfVisualElement.SetParentsBasedOnChildHierarchy(entity); // // Dispatch // if (entity is VisualElementEnvironmentItem veei) { _helper.DisplayOrEditAasEntityAasEnv( packages, veei.theEnv, veei, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementAdminShell veaas) { _helper.DisplayOrEditAasEntityAas( packages, veaas.theEnv, veaas.theAas, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementAsset veas) { _helper.DisplayOrEditAasEntityAsset( packages, veas.theEnv, veas.theAsset, editMode, repo, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodelRef vesmref) { // data AdminShell.AdministrationShell aas = null; if (vesmref.Parent is VisualElementAdminShell xpaas) { aas = xpaas.theAas; } // edit _helper.DisplayOrEditAasEntitySubmodelOrRef( packages, vesmref.theEnv, aas, vesmref.theSubmodelRef, vesmref.theSubmodel, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodel vesm && vesm.theSubmodel != null) { _helper.DisplayOrEditAasEntitySubmodelOrRef( packages, vesm.theEnv, null, null, vesm.theSubmodel, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodelElement vesme) { _helper.DisplayOrEditAasEntitySubmodelElement( packages, vesme.theEnv, vesme.theContainer, vesme.theWrapper, vesme.theWrapper.submodelElement, editMode, repo, stack, hintMode: hintMode, nestedCds: cdSortOrder.HasValue && cdSortOrder.Value == VisualElementEnvironmentItem.ConceptDescSortOrder.BySme); } else if (entity is VisualElementOperationVariable vepv) { _helper.DisplayOrEditAasEntityOperationVariable( packages, vepv.theEnv, vepv.theContainer, vepv.theOpVar, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementConceptDescription vecd) { _helper.DisplayOrEditAasEntityConceptDescription( packages, vecd.theEnv, null, vecd.theCD, editMode, repo, stack, hintMode: hintMode, preventMove: cdSortOrder.HasValue && cdSortOrder.Value != VisualElementEnvironmentItem.ConceptDescSortOrder.None); } else if (entity is VisualElementView vevw) { if (vevw.Parent != null && vevw.Parent is VisualElementAdminShell xpaas) { _helper.DisplayOrEditAasEntityView( packages, vevw.theEnv, xpaas.theAas, vevw.theView, editMode, stack, hintMode: hintMode); } else { _helper.AddGroup(stack, "View is corrupted!", _helper.levelColors.MainSection); } } else if (entity is VisualElementReference verf) { if (verf.Parent != null && verf.Parent is VisualElementView xpev) { _helper.DisplayOrEditAasEntityViewReference( packages, verf.theEnv, xpev.theView, (AdminShell.ContainedElementRef)verf.theReference, editMode, stack); } else { _helper.AddGroup(stack, "Reference is corrupted!", _helper.levelColors.MainSection); } } else if (entity is VisualElementSupplementalFile vesf) { _helper.DisplayOrEditAasEntitySupplementaryFile(packages, vesf.theFile, editMode, stack); } else if (entity is VisualElementPluginExtension vepe) { // create controls object result = null; try { // replace at top level theMasterPanel.Children.Clear(); if (vepe.thePlugin != null) { result = vepe.thePlugin.InvokeAction( "fill-panel-visual-extension", vepe.thePackage, vepe.theReferable, theMasterPanel); } } catch (Exception ex) { AdminShellNS.LogInternally.That.SilentlyIgnoredError(ex); } // add? if (result == null) { // re-init display! #if MONOUI stack = ClearDisplayDefautlStack(); #else stack = new AnyUiStackPanel(); #endif // helping message _helper.AddGroup( stack, "Entity from Plugin cannot be rendered!", _helper.levelColors.MainSection); } else { // this is natively done; do NOT render Any UI to WPF inhibitRenderStackToPanel = true; } // show no panel nor scroll renderHints.scrollingPanel = false; renderHints.showDataPanel = false; } else { _helper.AddGroup(stack, "Entity is unknown!", _helper.levelColors.MainSection); } }
public DisplayRenderHints DisplayMessage(string message) { // reset _packages = null; _theEntity = null; _displayContext = null; _lastRenderedRootElement = null; // Grid to fill full page var g = new Grid(); g.Background = Brushes.DarkGray; g.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1.0) }); g.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); g.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1.0) }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1.0) }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1.0) }); // textblock var tb = new TextBlock(); tb.Foreground = Brushes.White; tb.FontSize = 18.0; tb.Text = "" + message; tb.FontWeight = FontWeights.Bold; tb.HorizontalAlignment = HorizontalAlignment.Center; tb.VerticalAlignment = VerticalAlignment.Center; g.Children.Add(tb); Grid.SetRow(tb, 1); Grid.SetColumn(tb, 1); // manually render theMasterPanel.Children.Clear(); theMasterPanel.Children.Add(g); // render hints var rh = new DisplayRenderHints() { scrollingPanel = false, showDataPanel = false }; return(rh); }
public DisplayRenderHints DisplayOrEditVisualAasxElement( PackageCentral packages, ListOfVisualElementBasic entities, bool editMode, bool hintMode = false, bool showIriMode = false, VisualElementEnvironmentItem.ConceptDescSortOrder?cdSortOrder = null, IFlyoutProvider flyoutProvider = null, IPushApplicationEvent appEventProvider = null, DispEditHighlight.HighlightFieldInfo hightlightField = null) { // // Start // // hint mode disable, when not edit hintMode = hintMode && editMode; // remember objects for UI thread / redrawing this._packages = packages; this._theEntities = entities; _helper.packages = packages; _helper.highlightField = hightlightField; _helper.appEventsProvider = appEventProvider; // primary access var renderHints = new DisplayRenderHints(); if (theMasterPanel == null || entities == null || entities.Count < 1) { renderHints.showDataPanel = false; return(renderHints); } #if MONOUI var stack = ClearDisplayDefautlStack(); #else var stack = new AnyUiStackPanel(); #endif // create display context for WPF _displayContext = new AnyUiDisplayContextWpf(flyoutProvider, packages); _helper.levelColors = DispLevelColors.GetLevelColorsFromOptions(Options.Curr); // modify repository ModifyRepo repo = null; if (editMode) { // some functionality still uses repo != null to detect editMode!! repo = new ModifyRepo(); } _helper.editMode = editMode; _helper.hintMode = hintMode; _helper.repo = repo; _helper.showIriMode = showIriMode; _helper.context = _displayContext; // // Test for Blazor // #if __test_blazor if (false) { var lab = new AnyUiLabel(); lab.Content = "Hallo"; lab.Foreground = AnyUiBrushes.DarkBlue; stack.Children.Add(lab); if (editMode) { var tb = new AnyUiTextBox(); tb.Foreground = AnyUiBrushes.Black; tb.Text = "Initial"; stack.Children.Add(tb); repo.RegisterControl(tb, (o) => { Log.Singleton.Info($"Text changed to .. {""+o}"); return(new AnyUiLambdaActionNone()); }); var btn = new AnyUiButton(); btn.Content = "Click me!"; stack.Children.Add(btn); repo.RegisterControl(btn, (o) => { Log.Singleton.Error("Button clicked!"); return(new AnyUiLambdaActionRedrawAllElements(null)); }); } } #endif var inhibitRenderStackToPanel = false; if (entities.ExactlyOne) { // // Dispatch: ONE item // var entity = entities.First(); if (entity is VisualElementEnvironmentItem veei) { _helper.DisplayOrEditAasEntityAasEnv( packages, veei.theEnv, veei, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementAdminShell veaas) { _helper.DisplayOrEditAasEntityAas( packages, veaas.theEnv, veaas.theAas, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementAsset veas) { _helper.DisplayOrEditAasEntityAsset( packages, veas.theEnv, veas.theAsset, editMode, repo, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodelRef vesmref) { AdminShell.AdministrationShell aas = null; if (vesmref.Parent is VisualElementAdminShell xpaas) { aas = xpaas.theAas; } _helper.DisplayOrEditAasEntitySubmodelOrRef( packages, vesmref.theEnv, aas, vesmref.theSubmodelRef, vesmref.theSubmodel, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodel vesm) { _helper.DisplayOrEditAasEntitySubmodelOrRef( packages, vesm.theEnv, null, null, vesm.theSubmodel, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementSubmodelElement vesme) { _helper.DisplayOrEditAasEntitySubmodelElement( packages, vesme.theEnv, vesme.theContainer, vesme.theWrapper, vesme.theWrapper.submodelElement, editMode, repo, stack, hintMode: hintMode, nestedCds: cdSortOrder.HasValue && cdSortOrder.Value == VisualElementEnvironmentItem.ConceptDescSortOrder.BySme); } else if (entity is VisualElementOperationVariable vepv) { _helper.DisplayOrEditAasEntityOperationVariable( packages, vepv.theEnv, vepv.theContainer, vepv.theOpVar, editMode, stack, hintMode: hintMode); } else if (entity is VisualElementConceptDescription vecd) { _helper.DisplayOrEditAasEntityConceptDescription( packages, vecd.theEnv, null, vecd.theCD, editMode, repo, stack, hintMode: hintMode, preventMove: cdSortOrder.HasValue && cdSortOrder.Value != VisualElementEnvironmentItem.ConceptDescSortOrder.None); } else if (entity is VisualElementView vevw) { if (vevw.Parent != null && vevw.Parent is VisualElementAdminShell xpaas) { _helper.DisplayOrEditAasEntityView( packages, vevw.theEnv, xpaas.theAas, vevw.theView, editMode, stack, hintMode: hintMode); } else { _helper.AddGroup(stack, "View is corrupted!", _helper.levelColors.MainSection); } } else if (entity is VisualElementReference verf) { if (verf.Parent != null && verf.Parent is VisualElementView xpev) { _helper.DisplayOrEditAasEntityViewReference( packages, verf.theEnv, xpev.theView, (AdminShell.ContainedElementRef)verf.theReference, editMode, stack); } else { _helper.AddGroup(stack, "Reference is corrupted!", _helper.levelColors.MainSection); } } else if (entity is VisualElementSupplementalFile vesf) { _helper.DisplayOrEditAasEntitySupplementaryFile(packages, vesf.theFile, editMode, stack); } else if (entity is VisualElementPluginExtension vepe) { // create controls object result = null; try { // replace at top level theMasterPanel.Children.Clear(); if (vepe.thePlugin != null) { result = vepe.thePlugin.InvokeAction( "fill-panel-visual-extension", vepe.thePackage, vepe.theReferable, theMasterPanel); } } catch (Exception ex) { AdminShellNS.LogInternally.That.SilentlyIgnoredError(ex); } // add? if (result == null) { // re-init display! #if MONOUI stack = ClearDisplayDefautlStack(); #else stack = new AnyUiStackPanel(); #endif // helping message _helper.AddGroup( stack, "Entity from Plugin cannot be rendered!", _helper.levelColors.MainSection); } else { // this is natively done; do NOT render Any UI to WPF inhibitRenderStackToPanel = true; } // show no panel nor scroll renderHints.scrollingPanel = false; renderHints.showDataPanel = false; } else { _helper.AddGroup(stack, "Entity is unknown!", _helper.levelColors.MainSection); } } else { // // Dispatch: MULTIPLE items // _helper.DisplayOrEditAasEntityMultipleElements(packages, entities, editMode, stack, cdSortOrder); } // now render master stack #if __export_BLAZOR var fn = @"fileEdit.json"; if (!editMode) { count = 0; var jsonSerializerSettings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, Formatting = Formatting.Indented }; var json = JsonConvert.SerializeObject(stack, jsonSerializerSettings); System.IO.File.WriteAllText(fn, json); } if (editMode) { if (true && count == 2) { count = 0; JsonSerializerSettings settings = new JsonSerializerSettings { // SerializationBinder = new DisplayNameSerializationBinder( // new[] { typeof(AasxIntegrationBase.AasForms.FormDescListOfElement), // typeof(AasxIntegrationBase.AasForms.FormDescProperty) }), // SerializationBinder = new DisplayNameSerializationBinder( // new[] { typeof(AnyUiStackPanel), typeof(AnyUiUIElement) }), // NullValueHandling = NullValueHandling.Ignore, ReferenceLoopHandling = ReferenceLoopHandling.Error, TypeNameHandling = TypeNameHandling.All, Formatting = Formatting.Indented }; //if (stack is AnyUiPanel pan) //{ // for (int i = 0; i < pan.Children.Count; i++) // { // var json = JsonConvert.SerializeObject(pan.Children[i], settings); // System.IO.File.WriteAllText(fn+"."+i, json); // } //} var json = JsonConvert.SerializeObject(stack, settings); System.IO.File.WriteAllText(fn, json); } count++; /* * var writer = new System.Xml.Serialization.XmlSerializer(typeof(AnyUiUIElement)); * var wfile = new System.IO.StreamWriter(@"c:\development\fileEdit.xml"); * writer.Serialize(wfile, stack); * wfile.Close(); */ } #endif #if MONOUI #else // render Any UI to WPF? if (!inhibitRenderStackToPanel) { // rendering theMasterPanel.Children.Clear(); var spwpf = _displayContext.GetOrCreateWpfElement(stack); _helper.ShowLastHighlights(); DockPanel.SetDock(spwpf, Dock.Top); theMasterPanel.Children.Add(spwpf); // register key shortcuts var num = _displayContext.PrepareNameList(stack); if (num > 0) { _displayContext.RegisterKeyShortcut( "aas-elem-move-up", ModifierKeys.Shift | ModifierKeys.Control, Key.Up, "Move current AAS element up by one position."); _displayContext.RegisterKeyShortcut( "aas-elem-move-down", ModifierKeys.Shift | ModifierKeys.Control, Key.Down, "Move current AAS element down by one position."); _displayContext.RegisterKeyShortcut( "aas-elem-move-top", ModifierKeys.Shift | ModifierKeys.Control, Key.Home, "Move current AAS element to the first position of the respective list."); _displayContext.RegisterKeyShortcut( "aas-elem-move-end", ModifierKeys.Shift | ModifierKeys.Control, Key.End, "Move current AAS element to the last position of the respective list."); _displayContext.RegisterKeyShortcut( "aas-elem-delete", ModifierKeys.Shift | ModifierKeys.Control, Key.Delete, "Delete current AAS element in the respective list. Shift key skips dialogue."); _displayContext.RegisterKeyShortcut( "aas-elem-cut", ModifierKeys.Shift | ModifierKeys.Control, Key.X, "Transfers current AAS element into paste buffer and deletes in respective list."); _displayContext.RegisterKeyShortcut( "aas-elem-copy", ModifierKeys.Shift | ModifierKeys.Control, Key.C, "Copies current AAS element into paste buffer for later pasting."); _displayContext.RegisterKeyShortcut( "aas-elem-paste-into", ModifierKeys.Shift | ModifierKeys.Control, Key.V, "Copy existing paste buffer into the child list of the current AAS element."); _displayContext.RegisterKeyShortcut( "aas-elem-paste-above", ModifierKeys.Shift | ModifierKeys.Control, Key.W, "Copy existing paste buffer above the current AAS element in the same list."); _displayContext.RegisterKeyShortcut( "aas-elem-paste-below", ModifierKeys.Shift | ModifierKeys.Control, Key.Y, "Copy existing paste buffer below the current AAS element in the same list."); } } // keep the stack _lastRenderedRootElement = stack; #endif // return render hints return(renderHints); }
public static void Main(string[] args) { //// env = new AdminShellPackageEnv("Example_AAS_ServoDCMotor_21.aasx"); loadAasxFiles(); #if __test__PackageLogic #else packages = new PackageCentral(); // TODO (MIHO, 2021-06-07): how to initialize? packages.MainItem.TakeOver(env); helper = new DispEditHelperEntities(); helper.levelColors = DispLevelColors.GetLevelColorsFromOptions(Options.Curr); // some functionality still uses repo != null to detect editMode!! repo = new ModifyRepo(); helper.editMode = editMode; helper.hintMode = hintMode; helper.repo = repo; helper.context = null; helper.packages = packages; stack17 = new AnyUiStackPanel(); stack17.Orientation = AnyUiOrientation.Vertical; helper.DisplayOrEditAasEntityAas( packages, env.AasEnv, env.AasEnv.AdministrationShells[0], editMode, stack17, hintMode: hintMode); AnyUi.AnyUiDisplayContextHtml.htmlDotnetThread.Start(); #endif // // Test for Blazor // #if _not_enabled stack2 = JsonConvert.DeserializeObject <AnyUiStackPanel>(File.ReadAllText(@"c:\development\file.json")); var d = new JavaScriptSerializer(); stack2 = d.Deserialize <AnyUiStackPanel>(File.ReadAllText(@"c:\development\file.json")); var parent = (Dictionary <string, object>)results["Parent"]; #endif #if _not_enabled { string s = File.ReadAllText(@"c:\development\file.json"); var jsonSerializerSettings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All }; stack2 = JsonConvert.DeserializeObject <AnyUiStackPanel>(s, jsonSerializerSettings); } #endif if (true) { stack.Orientation = AnyUiOrientation.Vertical; var lab1 = new AnyUiLabel(); lab1.Content = "Hallo1"; lab1.Foreground = AnyUiBrushes.DarkBlue; stack.Children.Add(lab1); var stck2 = new AnyUiStackPanel(); stck2.Orientation = AnyUiOrientation.Horizontal; stack.Children.Add(stck2); var lab2 = new AnyUiLabel(); lab2.Content = "Hallo2"; lab2.Foreground = AnyUiBrushes.DarkBlue; stck2.Children.Add(lab2); var stck3 = new AnyUiStackPanel(); stck3.Orientation = AnyUiOrientation.Horizontal; stck2.Children.Add(stck3); var lab3 = new AnyUiLabel(); lab3.Content = "Hallo3"; lab3.Foreground = AnyUiBrushes.DarkBlue; stck3.Children.Add(lab3); if (editMode) { var tb = new AnyUiTextBox(); tb.Foreground = AnyUiBrushes.Black; tb.Text = "Initial"; stck2.Children.Add(tb); var btn = new AnyUiButton(); btn.Content = "Click me!"; btn.DisplayData = new BlazorDisplayData(lambda: (o) => { if (o == btn) { Program.LogLine = "Hallo, Match zwischen Button und callback!"; } }); stck3.Children.Add(btn); } } CreateHostBuilder(args).Build().Run(); }