From 6785f45a68ca6fe8adacb633840e458682384db5 Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:09:28 +0100 Subject: [PATCH 1/8] refactor: move Selection to seperate Sample App --- .vscode/settings.json | 18 ++- DevTKSS.Uno.SampleApps.slnx | 30 ++++ src/global.json => global.json | 0 src/.vscode/launch.json | 30 +++- src/.vscode/tasks.json | 38 ++++- ...DevTKSS.Extensions.Uno-ExtensionsOnly.slnf | 2 +- src/DevTKSS.Uno.SampleApps-GalleryOnly.slnf | 2 +- src/DevTKSS.Uno.SampleApps-Tutorials.slnf | 4 +- src/DevTKSS.Uno.Samples.sln | 75 ---------- .../App.xaml | 29 ++++ .../App.xaml.cs | 4 +- .../Assets/Icons/icon.svg | 0 .../Assets/Icons/icon_foreground.svg | 0 .../Assets/SharedAssets.md | 0 .../Assets/Splash/splash_screen.svg | 0 .../DevTKSS.Uno.XamlNavigationApp.csproj | 39 +++++ .../GlobalUsings.cs | 10 ++ .../Models/AppConfig.cs | 6 + .../Models/Entity.cs | 3 + .../Package.appxmanifest | 0 .../Platforms/Desktop/Program.cs | 12 ++ .../Presentation/DashboardModel.cs | 2 +- .../Presentation/DashboardPage.xaml | 4 +- .../Presentation/DashboardPage.xaml.cs | 9 ++ .../Presentation/MainModel.cs | 2 +- .../Presentation/MainPage.xaml | 37 +++++ .../Presentation/MainPage.xaml.cs | 9 ++ .../Presentation/SecondModel.cs | 10 ++ .../Presentation/SecondPage.xaml | 19 +++ .../Presentation/SecondPage.xaml.cs | 10 ++ .../Presentation/Shell.xaml | 36 +++++ .../Presentation/Shell.xaml.cs | 10 ++ .../Presentation/ShellModel.cs | 13 ++ .../PublishProfiles/win-arm64.pubxml | 0 .../Properties/PublishProfiles/win-x64.pubxml | 0 .../Properties/PublishProfiles/win-x86.pubxml | 0 .../Properties/launchSettings.json | 22 +++ .../ReadMe.de.md | 26 ++++ .../ReadMe.en.md | 26 ++++ .../Services/Endpoints/DebugHandler.cs | 44 ++++++ .../Strings/en/Resources.resw | 123 ++++++++++++++++ .../Strings/es/Resources.resw | 123 ++++++++++++++++ .../Strings/fr/Resources.resw | 123 ++++++++++++++++ .../Strings/pt-BR/Resources.resw | 123 ++++++++++++++++ .../Styles/ColorPaletteOverride.json | 0 .../Styles/ColorPaletteOverride.xaml | 0 .../app.manifest | 25 ++++ .../appsettings.development.json | 0 .../appsettings.json | 0 .../App.xaml | 0 src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs | 103 +++++++++++++ .../Assets/Icons/icon.svg | 42 ++++++ .../Assets/Icons/icon_foreground.svg | 137 ++++++++++++++++++ .../Assets/SharedAssets.md | 32 ++++ .../Assets/Splash/splash_screen.svg | 137 ++++++++++++++++++ .../DevTKSS.Uno.XamlNavigationApp.csproj | 0 .../GlobalUsings.cs | 0 .../Models/AppConfig.cs | 0 .../Models/Entity.cs | 0 .../Package.appxmanifest | 31 ++++ .../Platforms/Desktop/Program.cs | 0 .../Presentation/DashboardModel.cs | 11 ++ .../Presentation/DashboardPage.xaml | 23 +++ .../Presentation/DashboardPage.xaml.cs | 0 .../Presentation/MainModel.cs | 32 ++++ .../Presentation/MainPage.xaml | 0 .../Presentation/MainPage.xaml.cs | 0 .../Presentation/SecondModel.cs | 0 .../Presentation/SecondPage.xaml | 0 .../Presentation/SecondPage.xaml.cs | 0 .../Presentation/Shell.xaml | 0 .../Presentation/Shell.xaml.cs | 0 .../Presentation/ShellModel.cs | 0 .../PublishProfiles/win-arm64.pubxml | 18 +++ .../Properties/PublishProfiles/win-x64.pubxml | 18 +++ .../Properties/PublishProfiles/win-x86.pubxml | 23 +++ .../Properties/launchSettings.json | 0 .../ReadMe.de.md | 0 .../ReadMe.en.md | 0 .../Services/Endpoints/DebugHandler.cs | 0 .../Strings/en/Resources.resw | 0 .../Strings/es/Resources.resw | 0 .../Strings/fr/Resources.resw | 0 .../Strings/pt-BR/Resources.resw | 0 .../Styles/ColorPaletteOverride.json | 76 ++++++++++ .../Styles/ColorPaletteOverride.xaml | 65 +++++++++ .../app.manifest | 0 .../appsettings.development.json | 5 + .../appsettings.json | 13 ++ 89 files changed, 1764 insertions(+), 100 deletions(-) create mode 100644 DevTKSS.Uno.SampleApps.slnx rename src/global.json => global.json (100%) delete mode 100644 src/DevTKSS.Uno.Samples.sln create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/App.xaml.cs (96%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Assets/Icons/icon.svg (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Assets/Icons/icon_foreground.svg (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Assets/SharedAssets.md (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Assets/Splash/splash_screen.svg (100%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.XamlNavigationApp.csproj create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/GlobalUsings.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/AppConfig.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/Entity.cs rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Package.appxmanifest (100%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Platforms/Desktop/Program.cs rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Presentation/DashboardModel.cs (92%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Presentation/DashboardPage.xaml (88%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardPage.xaml.cs rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Presentation/MainModel.cs (94%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/MainPage.xaml create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/MainPage.xaml.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondModel.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/ShellModel.cs rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Properties/PublishProfiles/win-arm64.pubxml (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Properties/PublishProfiles/win-x64.pubxml (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Properties/PublishProfiles/win-x86.pubxml (100%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/launchSettings.json create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Services/Endpoints/DebugHandler.cs create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/en/Resources.resw create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/es/Resources.resw create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/fr/Resources.resw create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/pt-BR/Resources.resw rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Styles/ColorPaletteOverride.json (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/Styles/ColorPaletteOverride.xaml (100%) create mode 100644 src/DevTKSS.Uno.SimpleMemberSelectionApp/app.manifest rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/appsettings.development.json (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.SimpleMemberSelectionApp}/appsettings.json (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/App.xaml (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon.svg create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon_foreground.svg create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Assets/SharedAssets.md create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Assets/Splash/splash_screen.svg rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/DevTKSS.Uno.XamlNavigationApp.csproj (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/GlobalUsings.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Models/AppConfig.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Models/Entity.cs (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Package.appxmanifest rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Platforms/Desktop/Program.cs (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardModel.cs create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/DashboardPage.xaml.cs (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/MainPage.xaml (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/MainPage.xaml.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/SecondModel.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/SecondPage.xaml (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/SecondPage.xaml.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/Shell.xaml (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/Shell.xaml.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Presentation/ShellModel.cs (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-arm64.pubxml create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x64.pubxml create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x86.pubxml rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Properties/launchSettings.json (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/ReadMe.de.md (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/ReadMe.en.md (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Services/Endpoints/DebugHandler.cs (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Strings/en/Resources.resw (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Strings/es/Resources.resw (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Strings/fr/Resources.resw (100%) rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/Strings/pt-BR/Resources.resw (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.json create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.xaml rename src/{DevTKSS.Uno.XamlNavigationApp-1 => DevTKSS.Uno.XamlNavigationApp}/app.manifest (100%) create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/appsettings.development.json create mode 100644 src/DevTKSS.Uno.XamlNavigationApp/appsettings.json diff --git a/.vscode/settings.json b/.vscode/settings.json index c74be28..ec33fd4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,21 @@ { "files.associations": { - "*.tmpl*": "mustache" + "*.tmpl*": "mustache", + "global.json": "jsonc" }, + "markdownlint.lintWorkspaceGlobs": [ + "**/*.{md,mkd,mdwn,mdown,markdown,markdn,mdtxt,mdtext,workbook}", + "!**/*.code-search", + "!**/bower_components", + "!**/node_modules", + "!**/.git", + "!**/vendor", + "!**/copilot-instructions.md" + ], + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "*.xaml": "$(capture).xaml.cs" + }, + "dotnet.defaultSolution": "DevTKSS.Uno.SampleApps.slnx" } \ No newline at end of file diff --git a/DevTKSS.Uno.SampleApps.slnx b/DevTKSS.Uno.SampleApps.slnx new file mode 100644 index 0000000..3efdf1b --- /dev/null +++ b/DevTKSS.Uno.SampleApps.slnx @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/global.json b/global.json similarity index 100% rename from src/global.json rename to global.json diff --git a/src/.vscode/launch.json b/src/.vscode/launch.json index 6efab40..209ee0f 100644 --- a/src/.vscode/launch.json +++ b/src/.vscode/launch.json @@ -11,11 +11,11 @@ "name": "Uno Platform Desktop Debug (MvuxGallery)", "type": "coreclr", "request": "launch", - "preLaunchTask": "build-desktop", + "preLaunchTask": "build-desktop-MvuxGallery", // If you have changed target frameworks, make sure to update the program path. "program": "${workspaceFolder}/DevTKSS.Uno.SampleApps.MvuxGallery/bin/Debug/net9.0-desktop/DevTKSS.Uno.SampleApps.MvuxGallery.dll", "args": [], - "launchSettingsProfile": "DevTKSS.Uno.SampleApps.MvuxGallery (Desktop)", + "launchSettingsProfile": "DevTKSS MvuxGallery (Desktop)", "env": { "DOTNET_MODIFIABLE_ASSEMBLIES": "debug" }, @@ -25,24 +25,38 @@ "stopAtEntry": false }, { - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/main/debugger-launchjson.md "name": "Uno Platform Desktop Debug (XamlNavigationApp)", "type": "coreclr", "request": "launch", - "preLaunchTask": "build-desktop", + "preLaunchTask": "build-desktop-XamlNavigationApp", // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp-1/bin/Debug/net9.0-desktop/DevTKSS.Uno.XamlNavigationApp.dll", + "program": "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp/bin/Debug/net9.0-desktop/DevTKSS.Uno.XamlNavigationApp.dll", "args": [], "launchSettingsProfile": "DevTKSS.Uno.XamlNavigationApp (Desktop)", "env": { "DOTNET_MODIFIABLE_ASSEMBLIES": "debug" }, - "cwd": "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp-1", + "cwd": "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp", // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console "console": "internalConsole", "stopAtEntry": false }, + { + "name": "Uno Platform Desktop Debug (SimpleMemberSelectionApp)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build-desktop-SimpleMemberSelectionApp", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/DevTKSS.Uno.SimpleMemberSelectionApp-1/bin/Debug/net9.0-desktop/DevTKSS.Uno.SimpleMemberSelectionApp.dll", + "args": [], + "launchSettingsProfile": "DevTKSS.Uno.SimpleMemberSelectionApp (Desktop)", + "env": { + "DOTNET_MODIFIABLE_ASSEMBLIES": "debug" + }, + "cwd": "${workspaceFolder}/DevTKSS.Uno.SimpleMemberSelectionApp", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + } ] } \ No newline at end of file diff --git a/src/.vscode/tasks.json b/src/.vscode/tasks.json index 2614aac..9230005 100644 --- a/src/.vscode/tasks.json +++ b/src/.vscode/tasks.json @@ -2,7 +2,7 @@ "version": "2.0.0", "tasks": [ { - "label": "build-desktop MvuxGallery", + "label": "build-desktop-MvuxGallery", "command": "dotnet", "type": "process", "args": [ @@ -15,7 +15,7 @@ "problemMatcher": "$msCompile" }, { - "label": "publish-desktop MvuxGallery", + "label": "publish-desktop-MvuxGallery", "command": "dotnet", "type": "process", "args": [ @@ -28,12 +28,12 @@ "problemMatcher": "$msCompile" }, { - "label": "build-desktop XamlNavigationApp", + "label": "build-desktop-XamlNavigationApp", "command": "dotnet", "type": "process", "args": [ "build", - "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp-1/DevTKSS.Uno.XamlNavigationApp.csproj", + "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp/DevTKSS.Uno.XamlNavigationApp.csproj", "/property:GenerateFullPaths=true", "/property:TargetFramework=net9.0-desktop", "/consoleloggerparameters:NoSummary" @@ -41,12 +41,38 @@ "problemMatcher": "$msCompile" }, { - "label": "publish-desktop XamlNavigationApp", + "label": "publish-desktop-XamlNavigationApp", "command": "dotnet", "type": "process", "args": [ "publish", - "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp-1/DevTKSS.Uno.XamlNavigationApp.csproj", + "${workspaceFolder}/DevTKSS.Uno.XamlNavigationApp/DevTKSS.Uno.XamlNavigationApp.csproj", + "/property:GenerateFullPaths=true", + "/property:TargetFramework=net9.0-desktop", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "build-desktop-SimpleMemberSelectionApp", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.SimpleMemberSelectionApp.csproj", + "/property:GenerateFullPaths=true", + "/property:TargetFramework=net9.0-desktop", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish-desktop-SimpleMemberSelectionApp", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.SimpleMemberSelectionApp.csproj", "/property:GenerateFullPaths=true", "/property:TargetFramework=net9.0-desktop", "/consoleloggerparameters:NoSummary" diff --git a/src/DevTKSS.Extensions.Uno-ExtensionsOnly.slnf b/src/DevTKSS.Extensions.Uno-ExtensionsOnly.slnf index b921b0c..ec2fde0 100644 --- a/src/DevTKSS.Extensions.Uno-ExtensionsOnly.slnf +++ b/src/DevTKSS.Extensions.Uno-ExtensionsOnly.slnf @@ -1,6 +1,6 @@ { "solution": { - "path": "DevTKSS.Uno.Samples.sln", + "path": "..\\DevTKSS.Uno.SampleApps.slnx", "projects": [ "DevTKSS.Extensions.Uno\\DevTKSS.Extensions.Uno.csproj" ] diff --git a/src/DevTKSS.Uno.SampleApps-GalleryOnly.slnf b/src/DevTKSS.Uno.SampleApps-GalleryOnly.slnf index 693237c..f7fac6d 100644 --- a/src/DevTKSS.Uno.SampleApps-GalleryOnly.slnf +++ b/src/DevTKSS.Uno.SampleApps-GalleryOnly.slnf @@ -1,6 +1,6 @@ { "solution": { - "path": "DevTKSS.Uno.Samples.sln", + "path": "..\\DevTKSS.Uno.SampleApps.slnx", "projects": [ "DevTKSS.Extensions.Uno\\DevTKSS.Extensions.Uno.csproj", "DevTKSS.Uno.Samples.MvuxGallery\\DevTKSS.Uno.Samples.MvuxGallery.csproj" diff --git a/src/DevTKSS.Uno.SampleApps-Tutorials.slnf b/src/DevTKSS.Uno.SampleApps-Tutorials.slnf index 8753fec..0278fab 100644 --- a/src/DevTKSS.Uno.SampleApps-Tutorials.slnf +++ b/src/DevTKSS.Uno.SampleApps-Tutorials.slnf @@ -1,8 +1,8 @@ { "solution": { - "path": "DevTKSS.Uno.Samples.sln", + "path": "..\\DevTKSS.Uno.SampleApps.slnx", "projects": [ - "DevTKSS.Uno.XamlNavigationApp-1\\DevTKSS.Uno.XamlNavigationApp.csproj" + "DevTKSS.Uno.XamlNavigationApp\\DevTKSS.Uno.XamlNavigationApp.csproj" ] } } \ No newline at end of file diff --git a/src/DevTKSS.Uno.Samples.sln b/src/DevTKSS.Uno.Samples.sln deleted file mode 100644 index 0c99588..0000000 --- a/src/DevTKSS.Uno.Samples.sln +++ /dev/null @@ -1,75 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.12.35521.163 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E743ECB2-9BD7-4FBF-B90B-AA75D48758DB}" - ProjectSection(SolutionItems) = preProject - .gitignore = .gitignore - Directory.Build.props = Directory.Build.props - Directory.Build.targets = Directory.Build.targets - Directory.Packages.props = Directory.Packages.props - global.json = global.json - ..\README.md = ..\README.md - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTKSS.Uno.Samples.MvuxGallery", "DevTKSS.Uno.Samples.MvuxGallery\DevTKSS.Uno.Samples.MvuxGallery.csproj", "{541B1686-7761-9408-94BD-1E25D46AAC83}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTKSS.Uno.XamlNavigationApp", "DevTKSS.Uno.XamlNavigationApp-1\DevTKSS.Uno.XamlNavigationApp.csproj", "{AE75474D-B5FC-3152-7897-AB178447428A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DevTKSS.Extensions.Uno.Storage", "DevTKSS.Extensions.Uno.Storage\DevTKSS.Extensions.Uno.Storage.csproj", "{0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|Any CPU.Build.0 = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|x64.ActiveCfg = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|x64.Build.0 = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|x86.ActiveCfg = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Debug|x86.Build.0 = Debug|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|Any CPU.ActiveCfg = Release|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|Any CPU.Build.0 = Release|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|x64.ActiveCfg = Release|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|x64.Build.0 = Release|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|x86.ActiveCfg = Release|Any CPU - {541B1686-7761-9408-94BD-1E25D46AAC83}.Release|x86.Build.0 = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|x64.ActiveCfg = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|x64.Build.0 = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|x86.ActiveCfg = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Debug|x86.Build.0 = Debug|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|Any CPU.Build.0 = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|x64.ActiveCfg = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|x64.Build.0 = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|x86.ActiveCfg = Release|Any CPU - {AE75474D-B5FC-3152-7897-AB178447428A}.Release|x86.Build.0 = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|x64.Build.0 = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Debug|x86.Build.0 = Debug|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|Any CPU.Build.0 = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|x64.ActiveCfg = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|x64.Build.0 = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|x86.ActiveCfg = Release|Any CPU - {0C51BF5A-7C98-4BE2-3ED6-A5796C06AB8E}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {13A54FC3-A0D0-4DC3-8785-25DFA362BE4D} - EndGlobalSection -EndGlobal diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml new file mode 100644 index 0000000..e4d783f --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml.cs similarity index 96% rename from src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml.cs index ad95c0e..f5df262 100644 --- a/src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/App.xaml.cs @@ -1,6 +1,6 @@ using Uno.Resizetizer; -namespace DevTKSS.Uno.XamlNavigationApp; +namespace DevTKSS.Uno.SimpleMemberSelectionApp; public partial class App : Application { /// @@ -95,7 +95,7 @@ private static void RegisterRoutes(IViewRegistry views, IRouteRegistry routes) new ("Main", View: views.FindByViewModel(), IsDefault:true, Nested: [ - new("Dashboard", View: views.FindByViewModel(),IsDefault:true), + new ("Dashboard", View: views.FindByViewModel(),IsDefault:true), new ("Second", View: views.FindByViewModel()) ]) ] diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Icons/icon.svg b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Icons/icon.svg similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Icons/icon.svg rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Icons/icon.svg diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Icons/icon_foreground.svg b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Icons/icon_foreground.svg similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Icons/icon_foreground.svg rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Icons/icon_foreground.svg diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Assets/SharedAssets.md b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/SharedAssets.md similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Assets/SharedAssets.md rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/SharedAssets.md diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Splash/splash_screen.svg b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Splash/splash_screen.svg similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Assets/Splash/splash_screen.svg rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Assets/Splash/splash_screen.svg diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.XamlNavigationApp.csproj b/src/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.XamlNavigationApp.csproj new file mode 100644 index 0000000..6b47f70 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/DevTKSS.Uno.XamlNavigationApp.csproj @@ -0,0 +1,39 @@ + + + net9.0-desktop + + Exe + true + + + DevTKSS.Uno.SimpleMemberSelectionApp + + com.DevTKSS.SimpleMemberSelectionApp + + 1.0 + 1 + + Sonja + + DevTKSS SimpleMemberSelectionApp powered by Uno Platform. + + + + Material; + Dsp; + Hosting; + Toolkit; + Logging; + MVUX; + Configuration; + Localization; + Navigation; + ThemeService; + SkiaRenderer; + + + + diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/GlobalUsings.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/GlobalUsings.cs new file mode 100644 index 0000000..cdf2f23 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/GlobalUsings.cs @@ -0,0 +1,10 @@ +global using System.Collections.Immutable; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Localization; +global using Microsoft.Extensions.Logging; +global using Microsoft.Extensions.Options; +global using DevTKSS.Uno.SimpleMemberSelectionApp.Models; +global using DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; +global using ApplicationExecutionState = Windows.ApplicationModel.Activation.ApplicationExecutionState; +[assembly: Uno.Extensions.Reactive.Config.BindableGenerationTool(3)] diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/AppConfig.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/AppConfig.cs new file mode 100644 index 0000000..4744db3 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/AppConfig.cs @@ -0,0 +1,6 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Models; + +public record AppConfig +{ + public string? Environment { get; init; } +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/Entity.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/Entity.cs new file mode 100644 index 0000000..2406c23 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Models/Entity.cs @@ -0,0 +1,3 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Models; + +public record Entity(string Name); diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Package.appxmanifest b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Package.appxmanifest similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Package.appxmanifest rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Package.appxmanifest diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Platforms/Desktop/Program.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Platforms/Desktop/Program.cs new file mode 100644 index 0000000..896d2cf --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Platforms/Desktop/Program.cs @@ -0,0 +1,12 @@ +using Uno.UI.Hosting; +using DevTKSS.Uno.SimpleMemberSelectionApp; + +var host = UnoPlatformHostBuilder.Create() + .App(() => new App()) + .UseX11() + .UseLinuxFrameBuffer() + .UseMacOS() + .UseWin32() + .Build(); + +host.Run(); diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardModel.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardModel.cs similarity index 92% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardModel.cs rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardModel.cs index 239d52e..d1fa1cd 100644 --- a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardModel.cs +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardModel.cs @@ -1,4 +1,4 @@ -namespace DevTKSS.Uno.XamlNavigationApp.Presentation; +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; public partial record DashboardModel { public DashboardModel() diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardPage.xaml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardPage.xaml similarity index 88% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardPage.xaml rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardPage.xaml index 1487e5f..5efd5cb 100644 --- a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardPage.xaml +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/DashboardPage.xaml @@ -1,8 +1,8 @@  + + 20,20,20,20 + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/MainPage.xaml.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/MainPage.xaml.cs new file mode 100644 index 0000000..46724dd --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/MainPage.xaml.cs @@ -0,0 +1,9 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; + +public sealed partial class MainPage : Page +{ + public MainPage() + { + this.InitializeComponent(); + } +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondModel.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondModel.cs new file mode 100644 index 0000000..5c4e87a --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondModel.cs @@ -0,0 +1,10 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; + +public partial record SecondModel +{ + public SecondModel() + { + + } + public IState SecondTitle => State.Value(this, () => "Hallo vom Second"); +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml new file mode 100644 index 0000000..413e353 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml @@ -0,0 +1,19 @@ + + + + + + + + diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml.cs new file mode 100644 index 0000000..98a1f1d --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/SecondPage.xaml.cs @@ -0,0 +1,10 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; + +public sealed partial class SecondPage : Page +{ + public SecondPage() + { + this.InitializeComponent(); + } +} + diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml new file mode 100644 index 0000000..443e7b2 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml.cs new file mode 100644 index 0000000..3787074 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/Shell.xaml.cs @@ -0,0 +1,10 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; + +public sealed partial class Shell : UserControl, IContentControlProvider +{ + public Shell() + { + this.InitializeComponent(); + } + public ContentControl ContentControl => Splash; +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/ShellModel.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/ShellModel.cs new file mode 100644 index 0000000..428887e --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Presentation/ShellModel.cs @@ -0,0 +1,13 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Presentation; + +public class ShellModel +{ + private readonly INavigator _navigator; + + public ShellModel( + INavigator navigator) + { + _navigator = navigator; + // Add code here to initialize or attach event handlers to singleton services + } +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-arm64.pubxml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-arm64.pubxml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-arm64.pubxml rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-arm64.pubxml diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-x64.pubxml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-x64.pubxml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-x64.pubxml rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-x64.pubxml diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-x86.pubxml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-x86.pubxml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Properties/PublishProfiles/win-x86.pubxml rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/PublishProfiles/win-x86.pubxml diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/launchSettings.json b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/launchSettings.json new file mode 100644 index 0000000..e6b7afc --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Properties/launchSettings.json @@ -0,0 +1,22 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:8080", + "sslPort": 0 + } + }, + "profiles": { + "DevTKSS.Uno.SimpleMemberSelectionApp (Desktop)": { + "commandName": "Project", + "compatibleTargetFramework": "desktop" + }, + "DevTKSS.Uno.SimpleMemberSelectionApp (Desktop WSL2)": { + "commandName": "WSL2", + "commandLineArgs": "{ProjectDir}/bin/Debug/net9.0-desktop/DevTKSS.Uno.SimpleMemberSelectionApp.dll", + "distributionName": "", + "compatibleTargetFramework": "desktop" + } + } +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md new file mode 100644 index 0000000..2862697 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md @@ -0,0 +1,26 @@ +--- +uid: DevTKSS.Uno.SampleApps.Mvux.SimpleMemberSelectionApp +--- + +# DevTKSS.Uno.SampleApps.Mvux.SimpleMemberSelectionApp.de + +Willkommen bei der Uno Platform und insbesondere bei diesem Community-Tutorial-Beispiel! + +## Erste Schritte + +Wie du mit deiner neuen App loslegst: [Link zur Uno Doku `Getting Started`](https://aka.platform.uno/get-started) + +Weitere Informationen zur Verwendung des Uno.Sdk oder zum Aktualisieren der Uno Platform-Pakete in deiner Lösung: [Das Uno.Sdk benutzen](https://aka.platform.uno/using-uno-sdk) + +## Tutorial zum Mitmachen + +Diese Beispiel-App ist Teil eines Community-Tutorial-Videos, das dich durch den Prozess des Aufbaus einer XAML-Navigations-App mit der Uno Platform führt. + +Bitte wähle die Sprache deiner Wahl, um dem Tutorial zu folgen: + +- [Deutsch](../../docs/articles/de/Navigation/Extensions-Navigation-de.md) +- [Englisch](../../docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md) + +## Mitwirken + +Wenn du zu diesem Beispiel beitragen möchtest, wirf einen Blick auf das [GitHub repository](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps) diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md new file mode 100644 index 0000000..a03cef3 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md @@ -0,0 +1,26 @@ +--- +uid: DevTKSS.Uno.SampleApps.Mvux.SimpleMemberSelectionApp +--- + +# DevTKSS.Uno.SampleApps.Mvux.SimpleMemberSelectionApp.en + +Welcome to the Uno Platform and particularly this Community Tutorial Sample! + +## Getting Started + +To discover how to get started with your new app: [Link to the Uno `Getting Started`](https://aka.platform.uno/get-started) + +For more information on how to use the Uno.Sdk or upgrade Uno Platform packages in your solution: [Using the Uno.Sdk](https://aka.platform.uno/using-uno-sdk) + +## Tutorial to follow along with this sample + +This sample app is part of a Community Tutorial Video that will guide you through the process of building a XAML Navigation App using the Uno Platform. + +Please select the language of your choice to follow along: + +- [English](../../docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md) +- [German](../../docs/articles/de/Navigation/Extensions-Navigation-de.md) + +## Contributing + +If you want to contribute to this sample, please check out the [GitHub repository](www.github.com/DevTKSS/DevTKSS.Uno.SampleApps) diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Services/Endpoints/DebugHandler.cs b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Services/Endpoints/DebugHandler.cs new file mode 100644 index 0000000..0bb1f52 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Services/Endpoints/DebugHandler.cs @@ -0,0 +1,44 @@ +namespace DevTKSS.Uno.SimpleMemberSelectionApp.Services.Endpoints; + +internal class DebugHttpHandler : DelegatingHandler +{ + private readonly ILogger _logger; + + public DebugHttpHandler(ILogger logger, HttpMessageHandler? innerHandler = null) + : base(innerHandler ?? new HttpClientHandler()) + { + _logger = logger; + } + + protected async override Task SendAsync( + HttpRequestMessage request, + CancellationToken cancellationToken) + { + var response = await base.SendAsync(request, cancellationToken); +#if DEBUG + if (!response.IsSuccessStatusCode) + { + _logger.LogDebugMessage("Unsuccessful API Call"); + if (request.RequestUri is not null) + { + _logger.LogDebugMessage($"{request.RequestUri} ({request.Method})"); + } + + foreach ((var key, var values) in request.Headers.ToDictionary(x => x.Key, x => string.Join(", ", x.Value))) + { + _logger.LogDebugMessage($"{key}: {values}"); + } + + var content = request.Content is not null ? await request.Content.ReadAsStringAsync() : null; + if (!string.IsNullOrEmpty(content)) + { + _logger.LogDebugMessage(content); + } + + // Uncomment to automatically break when an API call fails while debugging + // System.Diagnostics.Debugger.Break(); + } +#endif + return response; + } +} diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/en/Resources.resw b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/en/Resources.resw new file mode 100644 index 0000000..8430a7f --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/en/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + DevTKSS SimpleMemberSelectionApp-en + + \ No newline at end of file diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/es/Resources.resw b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/es/Resources.resw new file mode 100644 index 0000000..674d3b2 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/es/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + DevTKSS SimpleMemberSelectionApp-es + + \ No newline at end of file diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/fr/Resources.resw b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/fr/Resources.resw new file mode 100644 index 0000000..fb20610 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/fr/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + DevTKSS SimpleMemberSelectionApp-fr + + \ No newline at end of file diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/pt-BR/Resources.resw b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/pt-BR/Resources.resw new file mode 100644 index 0000000..5ac307d --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Strings/pt-BR/Resources.resw @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + DevTKSS SimpleMemberSelectionApp-pt-BR + + \ No newline at end of file diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Styles/ColorPaletteOverride.json b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Styles/ColorPaletteOverride.json similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Styles/ColorPaletteOverride.json rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Styles/ColorPaletteOverride.json diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Styles/ColorPaletteOverride.xaml b/src/DevTKSS.Uno.SimpleMemberSelectionApp/Styles/ColorPaletteOverride.xaml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Styles/ColorPaletteOverride.xaml rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/Styles/ColorPaletteOverride.xaml diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/app.manifest b/src/DevTKSS.Uno.SimpleMemberSelectionApp/app.manifest new file mode 100644 index 0000000..8bea0c8 --- /dev/null +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/app.manifest @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/appsettings.development.json b/src/DevTKSS.Uno.SimpleMemberSelectionApp/appsettings.development.json similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/appsettings.development.json rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/appsettings.development.json diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/appsettings.json b/src/DevTKSS.Uno.SimpleMemberSelectionApp/appsettings.json similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/appsettings.json rename to src/DevTKSS.Uno.SimpleMemberSelectionApp/appsettings.json diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml b/src/DevTKSS.Uno.XamlNavigationApp/App.xaml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml rename to src/DevTKSS.Uno.XamlNavigationApp/App.xaml diff --git a/src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs b/src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs new file mode 100644 index 0000000..050f53c --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs @@ -0,0 +1,103 @@ +using Uno.Resizetizer; + +namespace DevTKSS.Uno.XamlNavigationApp; +public partial class App : Application +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected Window? MainWindow { get; private set; } + protected IHost? Host { get; private set; } + + protected async override void OnLaunched(LaunchActivatedEventArgs args) + { + var builder = this.CreateBuilder(args) + // Add navigation support for toolkit controls such as TabBar and NavigationView + .UseToolkitNavigation() + .Configure(host => host +#if DEBUG + // Switch to Development environment when running in DEBUG + .UseEnvironment(Environments.Development) +#endif + .UseLogging(configure: (context, logBuilder) => + { + // Configure log levels for different categories of logging + logBuilder + .SetMinimumLevel( + context.HostingEnvironment.IsDevelopment() ? + LogLevel.Information : + LogLevel.Warning) + + // Default filters for core Uno Platform namespaces + .CoreLogLevel(LogLevel.Warning); + + // Uno Platform namespace filter groups + // Uncomment individual methods to see more detailed logging + //// Generic Xaml events + //logBuilder.XamlLogLevel(LogLevel.Debug); + //// Layout specific messages + //logBuilder.XamlLayoutLogLevel(LogLevel.Debug); + //// Storage messages + //logBuilder.StorageLogLevel(LogLevel.Debug); + //// Binding related messages + //logBuilder.XamlBindingLogLevel(LogLevel.Debug); + //// Binder memory references tracking + //logBuilder.BinderMemoryReferenceLogLevel(LogLevel.Debug); + //// DevServer and HotReload related + //logBuilder.HotReloadCoreLogLevel(LogLevel.Information); + //// Debug JS interop + //logBuilder.WebAssemblyLogLevel(LogLevel.Debug); + + }, enableUnoLogging: true) + .UseConfiguration(configure: configBuilder => + configBuilder + .EmbeddedSource() + .Section() + ) + .ConfigureServices((context, services) => + { + // TODO: Register your services + //services.AddSingleton(); + }) + .UseNavigation(ReactiveViewModelMappings.ViewModelMappings, RegisterRoutes) + ); + MainWindow = builder.Window; + +#if DEBUG + MainWindow.UseStudio(); +#endif + MainWindow.SetWindowIcon(); + + Host = await builder.NavigateAsync(); + } + + private static void RegisterRoutes(IViewRegistry views, IRouteRegistry routes) + { + views.Register( + new ViewMap(ViewModel: typeof(ShellModel)), + new ViewMap(), + new ViewMap(), + new ViewMap() + ); + + routes.Register( + new RouteMap("", View: views.FindByViewModel(), + Nested: + [ + new ("Main", View: views.FindByViewModel(), IsDefault:true, + Nested: + [ + new ("Dashboard", View: views.FindByViewModel(),IsDefault:true), + new ("Second", View: views.FindByViewModel()) + ]) + ] + ) + ); + } +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon.svg b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon.svg new file mode 100644 index 0000000..a15af53 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon.svg @@ -0,0 +1,42 @@ + + + + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon_foreground.svg b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon_foreground.svg new file mode 100644 index 0000000..8ffc41a --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Icons/icon_foreground.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Assets/SharedAssets.md b/src/DevTKSS.Uno.XamlNavigationApp/Assets/SharedAssets.md new file mode 100644 index 0000000..b1cc4e7 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Assets/SharedAssets.md @@ -0,0 +1,32 @@ +# Shared Assets + +See documentation about assets here: https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md + +## Here is a cheat sheet + +1. Add the image file to the `Assets` directory of a shared project. +2. Set the build action to `Content`. +3. (Recommended) Provide an asset for various scales/dpi + +### Examples + +```text +\Assets\Images\logo.scale-100.png +\Assets\Images\logo.scale-200.png +\Assets\Images\logo.scale-400.png + +\Assets\Images\scale-100\logo.png +\Assets\Images\scale-200\logo.png +\Assets\Images\scale-400\logo.png +``` + +### Table of scales + +| Scale | WinUI | iOS | Android | +|-------|:-----------:|:---------------:|:-------:| +| `100` | scale-100 | @1x | mdpi | +| `125` | scale-125 | N/A | N/A | +| `150` | scale-150 | N/A | hdpi | +| `200` | scale-200 | @2x | xhdpi | +| `300` | scale-300 | @3x | xxhdpi | +| `400` | scale-400 | N/A | xxxhdpi | diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Assets/Splash/splash_screen.svg b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Splash/splash_screen.svg new file mode 100644 index 0000000..8ffc41a --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Assets/Splash/splash_screen.svg @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/DevTKSS.Uno.XamlNavigationApp.csproj b/src/DevTKSS.Uno.XamlNavigationApp/DevTKSS.Uno.XamlNavigationApp.csproj similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/DevTKSS.Uno.XamlNavigationApp.csproj rename to src/DevTKSS.Uno.XamlNavigationApp/DevTKSS.Uno.XamlNavigationApp.csproj diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/GlobalUsings.cs b/src/DevTKSS.Uno.XamlNavigationApp/GlobalUsings.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/GlobalUsings.cs rename to src/DevTKSS.Uno.XamlNavigationApp/GlobalUsings.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Models/AppConfig.cs b/src/DevTKSS.Uno.XamlNavigationApp/Models/AppConfig.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Models/AppConfig.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Models/AppConfig.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Models/Entity.cs b/src/DevTKSS.Uno.XamlNavigationApp/Models/Entity.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Models/Entity.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Models/Entity.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Package.appxmanifest b/src/DevTKSS.Uno.XamlNavigationApp/Package.appxmanifest new file mode 100644 index 0000000..9ef3814 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Package.appxmanifest @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Platforms/Desktop/Program.cs b/src/DevTKSS.Uno.XamlNavigationApp/Platforms/Desktop/Program.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Platforms/Desktop/Program.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Platforms/Desktop/Program.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardModel.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardModel.cs new file mode 100644 index 0000000..2088c3f --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardModel.cs @@ -0,0 +1,11 @@ +namespace DevTKSS.Uno.XamlNavigationApp.Presentation; +public partial record DashboardModel +{ + public DashboardModel() + { + + } + + public IState DashboardTitle => State.Value(this, () => "Hallo vom Dashboard"); + +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml new file mode 100644 index 0000000..5eee4c0 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml @@ -0,0 +1,23 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardPage.xaml.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/DashboardPage.xaml.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/DashboardPage.xaml.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs new file mode 100644 index 0000000..8f87572 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs @@ -0,0 +1,32 @@ +namespace DevTKSS.Uno.XamlNavigationApp.Presentation; + +public partial record MainModel +{ + private readonly INavigator _navigator; + private readonly IRouteNotifier _routeNotifier; + + public MainModel( + INavigator navigator, + IRouteNotifier routeNotifier) + { + _navigator = navigator; + _routeNotifier = routeNotifier; + _routeNotifier.RouteChanged += Main_OnRouteChanged; + } + + private async void Main_OnRouteChanged(object? sender, RouteChangedEventArgs e) + { + await Title.SetAsync(e.Navigator?.Route?.ToString()); + } + + public IState Title => State.Value(this, () => _navigator.Route?.ToString() ?? string.Empty); + + public IState Name => State.Value(this, () => string.Empty); + + public async Task GoToSecond() + { + var name = await Name; + await _navigator.NavigateViewModelAsync(this, data: new Entity(name!)); + } + +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainPage.xaml b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainPage.xaml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainPage.xaml rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainPage.xaml diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainPage.xaml.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainPage.xaml.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainPage.xaml.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainPage.xaml.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondModel.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondModel.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondModel.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondModel.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondPage.xaml b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondPage.xaml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondPage.xaml rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondPage.xaml diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondPage.xaml.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondPage.xaml.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/SecondPage.xaml.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/SecondPage.xaml.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/Shell.xaml b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/Shell.xaml similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/Shell.xaml rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/Shell.xaml diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/Shell.xaml.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/Shell.xaml.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/Shell.xaml.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/Shell.xaml.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/ShellModel.cs b/src/DevTKSS.Uno.XamlNavigationApp/Presentation/ShellModel.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/ShellModel.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Presentation/ShellModel.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-arm64.pubxml b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-arm64.pubxml new file mode 100644 index 0000000..5d5632a --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-arm64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + arm64 + win-arm64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x64.pubxml b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x64.pubxml new file mode 100644 index 0000000..12b8344 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x64.pubxml @@ -0,0 +1,18 @@ + + + + + FileSystem + x64 + win-x64 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x86.pubxml b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x86.pubxml new file mode 100644 index 0000000..65b8f1d --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Properties/PublishProfiles/win-x86.pubxml @@ -0,0 +1,23 @@ + + + + + FileSystem + x86 + win-x86 + bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\ + true + False + False + True + False + True + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Properties/launchSettings.json b/src/DevTKSS.Uno.XamlNavigationApp/Properties/launchSettings.json similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Properties/launchSettings.json rename to src/DevTKSS.Uno.XamlNavigationApp/Properties/launchSettings.json diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/ReadMe.de.md b/src/DevTKSS.Uno.XamlNavigationApp/ReadMe.de.md similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/ReadMe.de.md rename to src/DevTKSS.Uno.XamlNavigationApp/ReadMe.de.md diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/ReadMe.en.md b/src/DevTKSS.Uno.XamlNavigationApp/ReadMe.en.md similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/ReadMe.en.md rename to src/DevTKSS.Uno.XamlNavigationApp/ReadMe.en.md diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Services/Endpoints/DebugHandler.cs b/src/DevTKSS.Uno.XamlNavigationApp/Services/Endpoints/DebugHandler.cs similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Services/Endpoints/DebugHandler.cs rename to src/DevTKSS.Uno.XamlNavigationApp/Services/Endpoints/DebugHandler.cs diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Strings/en/Resources.resw b/src/DevTKSS.Uno.XamlNavigationApp/Strings/en/Resources.resw similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Strings/en/Resources.resw rename to src/DevTKSS.Uno.XamlNavigationApp/Strings/en/Resources.resw diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Strings/es/Resources.resw b/src/DevTKSS.Uno.XamlNavigationApp/Strings/es/Resources.resw similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Strings/es/Resources.resw rename to src/DevTKSS.Uno.XamlNavigationApp/Strings/es/Resources.resw diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Strings/fr/Resources.resw b/src/DevTKSS.Uno.XamlNavigationApp/Strings/fr/Resources.resw similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Strings/fr/Resources.resw rename to src/DevTKSS.Uno.XamlNavigationApp/Strings/fr/Resources.resw diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/Strings/pt-BR/Resources.resw b/src/DevTKSS.Uno.XamlNavigationApp/Strings/pt-BR/Resources.resw similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/Strings/pt-BR/Resources.resw rename to src/DevTKSS.Uno.XamlNavigationApp/Strings/pt-BR/Resources.resw diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.json b/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.json new file mode 100644 index 0000000..cd15492 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.json @@ -0,0 +1,76 @@ +{ + "description": "Default Uno Material colors", + "seed": "#5946d2", + "coreColors": { + "primary": "#5946d2", + "secondary": "#6b4ea2" + }, + "extendedColors": [], + "schemes": { + "light": { + "primary": "#5946d2", + "surfaceTint": "#5946d2", + "onPrimary": "#ffffff", + "primaryContainer": "#e5deff", + "onPrimaryContainer": "#170065", + "secondary": "#6b4ea2", + "onSecondary": "#ffffff", + "secondaryContainer": "#ebddff", + "onSecondaryContainer": "#220555", + "tertiary": "#0061a4", + "onTertiary": "#ffffff", + "tertiaryContainer": "#cfe4ff", + "onTertiaryContainer": "#001d36", + "error": "#b3261e", + "onError": "#ffffff", + "errorContainer": "#f9dedc", + "onErrorContainer": "#410e0b", + "background": "#fcfbff", + "onBackground": "#1c1b1f", + "surface": "#ffffff", + "onSurface": "#1c1b1f", + "surfaceVariant": "#f2eff5", + "onSurfaceVariant": "#8b8494", + "outline": "#79747e", + "outlineVariant": "#c9c5d0", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#e6e1e5", + "inverseOnSurface": "#1c1b1f", + "inversePrimary": "#2a009f" + }, + "dark": { + "primary": "#c7bfff", + "surfaceTint": "#c7bfff", + "onPrimary": "#2a009f", + "primaryContainer": "#4129ba", + "onPrimaryContainer": "#e4dfff", + "secondary": "#cdc2dc", + "onSecondary": "#332d41", + "secondaryContainer": "#433c52", + "onSecondaryContainer": "#eddfff", + "tertiary": "#9fcaff", + "onTertiary": "#003258", + "tertiaryContainer": "#00497d", + "onTertiaryContainer": "#d1e4ff", + "error": "#ffb4ab", + "onError": "#690005", + "errorContainer": "#93000a", + "onErrorContainer": "#ffdad6", + "background": "#1c1b1f", + "onBackground": "#e5e1e6", + "surface": "#302d37", + "onSurface": "#e6e1e5", + "surfaceVariant": "#47464f", + "onSurfaceVariant": "#c9c5d0", + "outline": "#928f99", + "outlineVariant": "#57545d", + "shadow": "#000000", + "scrim": "#000000", + "inverseSurface": "#e6e1e5", + "inverseOnSurface": "#1c1b1f", + "inversePrimary": "#2a009f" + } + }, + "palettes": {} +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.xaml b/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.xaml new file mode 100644 index 0000000..b47f330 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/Styles/ColorPaletteOverride.xaml @@ -0,0 +1,65 @@ + + + + + #5946D2 + #FFFFFF + #E5DEFF + #170065 + #6B4EA2 + #FFFFFF + #EBDDFF + #220555 + #0061A4 + #FFFFFF + #CFE4FF + #001D36 + #B3261E + #F9DEDC + #FFFFFF + #410E0B + #FCFBFF + #1C1B1F + #FFFFFF + #1C1B1F + #F2EFF5 + #8B8494 + #79747E + #F4EFF4 + #313033 + #C8BFFF + #5946D2 + #C9C5D0 + + + #C7BFFF + #2A009F + #4129BA + #E4DFFF + #CDC2DC + #332D41 + #433C52 + #EDDFFF + #9FCAFF + #003258 + #00497D + #D1E4FF + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1C1B1F + #E5E1E6 + #302D37 + #E6E1E5 + #47464F + #C9C5D0 + #928F99 + #1C1B1F + #E6E1E5 + #2A009F + #C7BFFF + #57545D + + + diff --git a/src/DevTKSS.Uno.XamlNavigationApp-1/app.manifest b/src/DevTKSS.Uno.XamlNavigationApp/app.manifest similarity index 100% rename from src/DevTKSS.Uno.XamlNavigationApp-1/app.manifest rename to src/DevTKSS.Uno.XamlNavigationApp/app.manifest diff --git a/src/DevTKSS.Uno.XamlNavigationApp/appsettings.development.json b/src/DevTKSS.Uno.XamlNavigationApp/appsettings.development.json new file mode 100644 index 0000000..31a70b7 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/appsettings.development.json @@ -0,0 +1,5 @@ +{ + "AppConfig": { + "Environment": "Development" + } +} diff --git a/src/DevTKSS.Uno.XamlNavigationApp/appsettings.json b/src/DevTKSS.Uno.XamlNavigationApp/appsettings.json new file mode 100644 index 0000000..187e4d5 --- /dev/null +++ b/src/DevTKSS.Uno.XamlNavigationApp/appsettings.json @@ -0,0 +1,13 @@ +{ + "AppConfig": { + "Environment": "Production" + }, + "LocalizationConfiguration": { + "Cultures": [ + "es", + "fr", + "pt-BR", + "en" + ] + } +} From 08b62f1ec9570d731ec0f780d90fe6b43f76d820 Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:09:55 +0100 Subject: [PATCH 2/8] chore: add slnx --- DevTKSS.Uno.SampleApps.slnx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DevTKSS.Uno.SampleApps.slnx b/DevTKSS.Uno.SampleApps.slnx index 3efdf1b..5cea17d 100644 --- a/DevTKSS.Uno.SampleApps.slnx +++ b/DevTKSS.Uno.SampleApps.slnx @@ -24,7 +24,6 @@ - - + From 6e799b3ed242f5321a36c31c866f104bbb704f4b Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:17:28 +0100 Subject: [PATCH 3/8] docs(XamlNavigation): Update Source and Tutorial Links and improve wording --- README.md | 17 ++++- docs/articles/de/Introduction-de.md | 2 +- .../de/Navigation/Extensions-Navigation-de.md | 10 ++- .../de/Navigation/HowTo-ChangeRoutes-de.md | 4 +- .../HowTo-Defining-UI-NavigationView-de.md | 42 ++++++----- .../de/Navigation/HowTo-ModelDefinition-de.md | 74 ++++++++++++++++--- .../de/Navigation/HowTo-RegisterRoutes-de.md | 22 ++++-- docs/articles/de/Navigation/toc.yml | 14 ++-- docs/articles/en/HowTo-Using-DI-in-ctor-en.md | 4 +- docs/articles/en/Introduction-en.md | 40 ++++++---- docs/articles/en/MvuxGallery-Overview-en.md | 10 +-- .../en/Navigation/Extensions-Navigation-en.md | 2 +- .../en/Navigation/HowTo-ChangeRoutes-en.md | 4 +- .../HowTo-Defining-UI-NavigationView-en.md | 30 ++++---- .../en/Navigation/HowTo-RegisterRoutes-en.md | 8 +- .../en/Navigation/Navigation-Options-en.md | 2 +- docs/articles/en/Navigation/toc.yml | 14 ++-- docs/articles/en/toc.yml | 2 +- 18 files changed, 199 insertions(+), 102 deletions(-) diff --git a/README.md b/README.md index b0aa36c..126a849 100644 --- a/README.md +++ b/README.md @@ -83,15 +83,24 @@ A complete tutorial application demonstrating navigation patterns with MVUX and #### Tutorial Content +- **[Tutorial Serie Uno.Extensions Navigation via Xaml](https://devtkss.github.io/DevTKSS.Uno.SampleApps/articles/en/Navigation/Extensions-Navigation-en.html)** - Step-by-step guide (🇩🇪 German | 🇬🇧 English) - or [watch the Video Guide 🇩🇪](https://youtu.be/knt2oOjHH30)! +- **[Listen to Route Changes with IRouteNotifier](https://devtkss.github.io/DevTKSS.Uno.SampleApps/articles/en/Navigation/HowTo-ChangeRoutes-en.html)** - Advanced navigation handling - or [🇩🇪 German Version](https://devtkss.github.io/DevTKSS.Uno.SampleApps/articles/de/Navigation/HowTo-ChangeRoutes-de.html) +- **[Video Tutorial Series](https://youtube.com/playlist?list=PLEL6kb4Bivm_g81iKBl-f0eYPNr5h2dFX)** - Complete walkthrough (🇩🇪 German with English subtitles) +- **[Source Code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/tree/master/src/DevTKSS.Uno.XamlNavigationApp/)** - Browse the implementation + +**Available Resources:** + - [Uno.Extensions.Reactive (MVUX)](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Mvux/Overview.html) - [Uno.Extensions.Navigation](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Navigation/NavigationOverview.html) - [XAML Markup Navigation](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Navigation/HowTo-NavigateInXAML.html) +- [IRouteNotifier](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Navigation/Advanced/HowTo-IRouteNotifier.html) -**Available Resources:** +### Simple Member Selection App -- **[Tutorial Documentation](https://devtkss.github.io/DevTKSS.Uno.SampleApps/articles/en/Navigation/Extensions-Navigation-en.html)** - Step-by-step guide (🇩🇪 German | 🇬🇧 English) -- **[Video Tutorial Series](https://youtube.com/playlist?list=PLEL6kb4Bivm_g81iKBl-f0eYPNr5h2dFX)** - Complete walkthrough (🇩🇪 German with English subtitles) -- **[Source Code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/tree/master/src/DevTKSS.Uno.XamlNavigationApp-1/)** - Browse the implementation +A basic application demonstrating selection and display of member names in a `ListView` bound to a `ListState` in the Model using MVUX. + +- **[Video Tutorial - How To: Binden von ListState und ImmutableList zu FeedView & ListView im UI | Uno Community Tutorial](https://youtu.be/wOsSlv1YFic)** - Step-by-step guide (🇩🇪 German) +- **[Source Code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/tree/master/src/DevTKSS.Uno.SimpleMemberSelectionApp/)** --- diff --git a/docs/articles/de/Introduction-de.md b/docs/articles/de/Introduction-de.md index 8eba71e..b6fe2f9 100644 --- a/docs/articles/de/Introduction-de.md +++ b/docs/articles/de/Introduction-de.md @@ -30,7 +30,7 @@ Hier ein schneller Überblick über die enthaltenen Samples. Detaillierte Infos ### XamlNavigationApp (Mvux) - [NavigationView in MVUX oder MVVM + XAML](xref:DevTKSS.Uno.ExtensionsNavigation.Overview.de) -- [Zum Quellcode](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1/) +- [Zum Quellcode](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp/) --- diff --git a/docs/articles/de/Navigation/Extensions-Navigation-de.md b/docs/articles/de/Navigation/Extensions-Navigation-de.md index 5a56615..463a535 100644 --- a/docs/articles/de/Navigation/Extensions-Navigation-de.md +++ b/docs/articles/de/Navigation/Extensions-Navigation-de.md @@ -28,7 +28,13 @@ Lass uns zuerst einmal schauen, was man beispielsweise in einer Xaml-basierten U ## Voraussetzungen -Diese Tutorial Reihe baut darauf auf, dass deine Entwicklungsumgebung bereits vollständig eingerichtet ist und der Befehl `uno-check --tfm net9.0-desktop` ausgeführt in deinem Terminal grünes Licht gibt. Hier kannst du diese auch noch einmal nachschauen: +Diese Tutorial Reihe baut darauf auf, dass deine Entwicklungsumgebung bereits vollständig eingerichtet ist und der nachfolgende Befehl dir in deinem Terminal ausgeführt grünes Licht gibt: + +```bash +uno-check --tfm net9.0-desktop` +``` + +Hier kannst du bei Bedarf auch noch einmal nachschauen: - [Tutorial: Einrichten der Entwicklungsumgebung](xref:DevTKSS.Uno.Setup.DevelopmentEnvironment.de) @@ -46,7 +52,7 @@ Wenn du diesen Schritt abgeschlossen hast, fahren wir mit der Implementierung de --- -- [Hier geht's zum Source Code der verwendeten Beispiel Anwendung XamlNavigationApp](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1) +- [Hier geht's zum Source Code der verwendeten Beispiel Anwendung XamlNavigationApp](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp) ### Uno Dokumentation Links diff --git a/docs/articles/de/Navigation/HowTo-ChangeRoutes-de.md b/docs/articles/de/Navigation/HowTo-ChangeRoutes-de.md index 4e82829..850821a 100644 --- a/docs/articles/de/Navigation/HowTo-ChangeRoutes-de.md +++ b/docs/articles/de/Navigation/HowTo-ChangeRoutes-de.md @@ -117,7 +117,7 @@ Solltest du das noch nicht gemacht haben, dann geht das jetzt ganz einfach auch Nun fehlt nur noch die eigentliche Reaktion auf die Routen Änderung. Das machen wir in der Methode `OnRouteChanged`, die wir zuvor im Konstruktor registriert haben. Hier ist ein Beispiel, wie du dies implementieren kannst: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainModel.cs#L19-L22)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs#L19-L22)] **Was passiert hier?** @@ -138,7 +138,7 @@ Glückwunsch! Du hast erfolgreich gelernt, wie du auf Routen Änderungen in dein **Hier nochmal der komplette Code, den du in deinem Model von diesem Tutorial haben solltest:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainModel.cs#L3-L25)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs#L3-L25)] ## Links zur Uno Documentation diff --git a/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md b/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md index 04eaaca..e67c6a1 100644 --- a/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md +++ b/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md @@ -6,7 +6,7 @@ uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.de In diesem Teil des Tutorials, wollen wir uns anschauen, wie man eine einfache Seitennavigation mittels einer `NavigationView` erstellen kann. -**Was zuvor geschah...** +**Was wir zuvor gemacht haben** Wir haben uns nun zuvor im Intro angeschaut, was wir mit der `Uno.Extensions.Navigation` und der `NavigationView` alles machen können und im anschluss das Setup der Anwendung angepasst oder diese erstellt. Nun wollen wir uns anschauen wie man dann dann auch umsetzen kann! @@ -14,7 +14,7 @@ Wir haben uns nun zuvor im Intro angeschaut, was wir mit der `Uno.Extensions.Nav In diesem Video werden wir uns zusammen anschauen, wie du ein `NavigationView`-Steuerelement in einer XAML-Markup-App einrichtest und verwendest. Wir werden die Navigation zwischen verschiedenen Seiten implementieren und dabei die MVUX-Prinzipien anwenden. Den Code kannst du dabei direkt aus dem Code hierunter kopieren und in deine Anwendung einfügen, wenn du möchtest, aber aus eigener Erfahrung heraus hilft es dir mehr, den Code selber zu schreiben und dabei zuzuschauen, wie es funktioniert. So kannst du auch besser verstehen, was du tust und warum. -![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://youtube.com/embed/knt2oOjHH30) +![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://youtube.com/embed/vVvnK02r2ug) ## Implementierung der NavigationView @@ -84,27 +84,33 @@ Nun wollen wir die von der Extension ermöglichten Eigenschaften, sogenannte `At ```diff - + utu:SafeArea.Insets="VisibleBounds"> + - - - + + + + + - - - - - + + + + + + + + + ``` 1. Zu guter Letzt benötigt das `Grid`, welches wir für die Navigation des Content der `NavigationView` verwenden wollen nun noch zwei letzte weitere und sehr wichtige Eigenschaften setzen, ohne welche es gut möglich ist, dass unser Vorhaben misslingt. @@ -118,8 +124,8 @@ Nun wollen wir die von der Extension ermöglichten Eigenschaften, sogenannte `At ```diff - ``` @@ -137,7 +143,7 @@ Nun wollen wir die von der Extension ermöglichten Eigenschaften, sogenannte `At *Die Namensgebung ist also keineswegs Zufall!* >[!NOTE] - > Der "Visibility"-Navigator ist gemäß der Dokumentation verfügbare Bezeichner für diese Eigenschaft. + > Der "Visibility"-Navigator ist gemäß der [Uno Dokumentation der einzige verfügbare Bezeichner für diese Eigenschaft](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Navigation/HowTo-Regions.html#properties-in-the-region-class). ## Nächste Schritte diff --git a/docs/articles/de/Navigation/HowTo-ModelDefinition-de.md b/docs/articles/de/Navigation/HowTo-ModelDefinition-de.md index 000c9aa..b8261de 100644 --- a/docs/articles/de/Navigation/HowTo-ModelDefinition-de.md +++ b/docs/articles/de/Navigation/HowTo-ModelDefinition-de.md @@ -4,23 +4,68 @@ uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-DefiningModelOrViewModel.de # Anleitung: Navigation im Model oder ViewModel -Nun wollen wir uns einmal anschauen, wie wir passend zur Uno Extensions Navigation unser Model bzw. ViewModel aufbauen müssen. +Nun wollen wir uns einmal anschauen, wie wir passend zur Uno Extensions Navigation unsere Verbindung zwischen der `View` und dem `ViewModel` aufbauen müssen. -## Voraussetzungen +Hierfür wollen wir uns natürlich ersteinmal die Frage stellen: **Navigation nur im Xaml - Geht das eigentlich?** -1. Erstelle hierfür zu aller erst ein Model bzw. ViewModel Element. +*Ja und Nein.* - [!INCLUDE [Anleitung zur Erstellung eines grundlegenden Model bzw. ViewModels](../HowTo-Adding-New-VM-Class-Record-de.md)] +Also, dann lass uns das doch mal genauer betrachten. Was bedeutet das denn nun? -2. Füge nun noch den `INavigator` als **DependencyInjection** Konstruktor Parameter hinzu. +- **Ja:** - [!INCLUDE [Anleitung: Nutze Konstruktor Parameter für DependencyInjection](../HowTo-Using-DI-in-ctor-de.md)] + Tatsächlich brauchst du grundsätzlich weder Codebehind noch Code im ViewModel / Model für die Navigation, wenn du die `Attached Properties` in dem Xaml deiner Seite nutzt. -## Navigation im Xaml + **Wie das geht, erfährst du bei Interesse direkt hier:** -Grundsätzlich benötigst du tatsächlich nicht unbedingt einen Navigations-Code im ViewModel / Model, wenn du wie in der [Anleitung: Definieren des UI mit NavigationView für ExtensionsNavigation](xref:DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.de) die `Attached Properties` nutzt! + [Anleitung: Definieren des UI mit NavigationView für ExtensionsNavigation](xref:DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.de) -In diesem Fall wären es klassischerweise nur dann die Title Eigenschaften oder andere, die du von View zu ViewModel bindest und du wärst fertig. Und genau das ist auch ein großer Vorteil dieser Extension meiner Meinung nach. + In diesem Fall wären es dann nur zum beispiel die anzuzeigende Eigenschaft, wie die `string`-Property `Title`, die du entsprechend in deiner `Page`, also deiner `View` zum `ViewModel` bzw. `Model` bindest und schon bist du fertig damit! + + > [!TIP] + > Mit der Attached Property `uen:Navi` kannst du den Titel der Seite in der NavigationView setzen. + +- **Nein:** + + 1. Du musst weiterhin die Routen, die du Navigieren möchtest in der `App.xaml.cs` Klasse in der `RegisterRoutes` Methode registrieren, damit der `INavigator` auch weiß, was zusammen gehört und von wo du mit welchen "Qualifizierern" welche Routen erlauben möchtest zu navigieren. + 2. Wenn du in deinem Model bzw. ViewModel eine Navigation auslösen möchtest, dann brauchst du den `INavigator` dort natürlich, um die Navigation zu starten. + +## Vorraussetzungen schaffen + +Gut, also lass uns doch mal davon ausgehen, dass wir genannten zweiten Fall haben und folgendes Tun wollen: + +1. Unser Anwender soll mit einem Klick auf einen `Button` eine Funktion in unserem `ViewModel` bzw. `Model` auslösen können +2. Diese Funktion soll ihn zur `SecondPage` navigieren, die wir in der Uno App Vorlage inkludiert hatten, aber es könnte auch jede andere Seite sein, die du selbst erstellt und registriert hast. + + Angenommen das hier ist unsere `App.xaml.cs` mit der `RegisterRoutes` Methode: + + ```csharp + { + views.Register( + new ViewMap(ViewModel: typeof(ShellModel)), + new ViewMap(), + new DataViewMap() + ); + + routes.Register( + new RouteMap("", View: views.FindByViewModel(), + Nested: + [ + new RouteMap("Main", View: views.FindByViewModel(), IsDefault:true), + new RouteMap("Second", View: views.FindByViewModel()) + ] + ) + ); + } + ``` + +Aber wie muss dafür unser `ViewModel` bzw. `Model` aussehen, damit wir das umsetzen können? + +Hierfür brauchen wir erstmal folgendes Schritte: + +1. [Erstelle ein Model bzw. ViewModel](xref:DevTKSS.Uno.Setup.HowTo-AddingNew-VM-Class-Record.de) + +2. [Und hole dir dort den `INavigator` als **`DependencyInjection` Konstruktor Parameter**](xref:DevTKSS.Uno.Setup.Using-DI-in-ctor.de) ## Binden der View UI Steuerelemente an Eigenschaften im ViewModel bzw. Model @@ -64,6 +109,10 @@ public partial class DashboardViewModel : ObservableObject } ``` +Mit diesem Code ist es dir möglich, die `Name` Eigenschaft in der View zu binden und den `NavigateSecondAsyncCommand` zu verwenden, um zur `SecondViewModel` zu navigieren. + +Hierbei kannst du einen Button oder ein anderes Steuerelement in der View verwenden, um die Navigation auszulösen, aber indem du die `IsEnabled` Eigenschaft des Steuerelements an den `CanExecute` Status des Befehls bindest, kannst du die Navigation nur dann ausführen, wenn der Name nicht leer ist. + ### [Mvux](#tab/mvux) ```csharp @@ -92,8 +141,11 @@ public partial record MainModel } ``` -Mit diesem Code ist es dir möglich, die `Name` Eigenschaft in der View zu binden und den `NavigateSecondAsyncCommand` zu verwenden, um zur `SecondViewModel` zu navigieren. +Hier könntest du dann in der View einen Button definieren, der die `NavigateSecondAsync` Methode aufruft, um zur `SecondModel` zu navigieren, sich den `Name` Wert holt und diesen als Daten an die nächste Seite übergibt. +Wenn du jetzt einmal vergleichst, wie das in Mvvm und Mvux aussieht, wirst du feststellen, dass es im Grunde genommen sehr ähnlich ist, aber in Mvux das ganze doch irgendwie übersichtlicher und du weniger "boilerplate" Code benötigt um das selbe zu erreichen. -Hierbei kannst du einen Button oder ein anderes Steuerelement in der View verwenden, um die Navigation auszulösen, aber indem du die `IsEnabled` Eigenschaft des Steuerelements an den `CanExecute` Status des Befehls bindest, kannst du die Navigation nur dann ausführen, wenn der Name nicht leer ist. +Und um zum beispiel direkt an den `IState Name` eine TwoWay Bindung in der View zu erstellen, brauchst du nicht einmal eine `PropertyChanged` Benachrichtigung, wie du es in Mvvm tun müsstest, sondern hängst einfach an das `.Value(...)` ein `.ForEach(...)` daran, erstellst eine Methode, die den neuen Wert empfängt und kannst dort direkt damit arbeiten. Kein lästiges Implementieren von `INotifyPropertyChanged` mehr. + +Mehr zu diesem Thema findest du hier im [Tutorial: Auf Routen Änderungen reagieren](xref:DevTKSS.Uno.ExtensionsNavigation.HowTo-ChangeRoutes.de) --- diff --git a/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md b/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md index 5164b08..da7f48d 100644 --- a/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md +++ b/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md @@ -4,7 +4,7 @@ uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-RegisterRoutes.de # Anleitung: Registrieren und Verwalten von Routen -Mit der `Uno.Extensions.Navigation` verwenden wir eine zentrale Definition der **Routen Registrierung** in der App Klasse [`App.xaml.cs`(source link)](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs) gehandhabt, was man sich vereinfacht schlichtweg wie eine Landkarte vorstellen kann. +Mit der `Uno.Extensions.Navigation` verwenden wir eine zentrale Definition der **Routen Registrierung** in der App Klasse [`App.xaml.cs`(source link)](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs) gehandhabt, was man sich vereinfacht schlichtweg wie eine Landkarte vorstellen kann. ## Voraussetzungen @@ -22,7 +22,7 @@ Bevor du mit der Routen Registrierung beginnst, brauchst du noch zwei Dinge: Füge die dafür benötigte Methode wie folgt in deine App Klasse unterhalb der `OnLaunched` Methode ein: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L82)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L82)] ## Definieren der `ViewMap`'s @@ -34,13 +34,16 @@ Hiermit teilen wir dem Navigator mit, welche Seite (`View`) mit welchem (`View`- new ViewMap(ViewModel: typeof(ShellModel)), new ViewMap(), new DataViewMap() + ); + + ... ``` Wenn zusätzliche Daten Objekte bei der Navigation dieser Route erforderlich sind, dann konvertierst du diese als `DataViewMap` beispielsweise so wie in der letzten Zeile. So sieht das zum Beispiel dann in der XamlNavigationApp aus, wo ich `Entity` nicht mehr benötigt habe und diese Route entsprechend zurück konvertiert habe: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L83-L89)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L83-L89?highlight=L5)] ## Hierarchisch aufgebaute `RoutesMap`'s @@ -65,9 +68,16 @@ Nun wollen wir aber auf der `MainPage` vielleicht eine TabBar, NavigationBar, ei **Das machen wir beispielsweise so:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L96-L101)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L91-L103)] + +Hier siehst du, dass ich: + +1. Eine weitere Seite hinzugefügt habe: `DashboardPage` +2. Ein zugehöriges Model erstellt habe: `DashboardModel` +3. Diese in der `routes.Register` Methode registriert habe, indem ich sie als `Nested` Routen der `Main`-Route hinzugefügt habe. +4. Und die beiden Routen `"Dashboard"` `"Second"` somit nun in der `RouteMap` der `Main`-Route verschachtelt sind. -Hier siehst du, dass ich eine weitere Seite hinzugefügt habe, die `DashboardPage` und ein Model dazu erstellt habe namens `DashboardModel`. Außerdem habe ich die Route `Second` in die `RouteMap` der `Main`-Route verschachtelt. +Klasse! Nun sind diese Routen also korrekt registriert und können mit dem "Nested"-Qualifizierer `-` in der NavigationView oder anderen Navigationssteuerelementen verwendet werden um sie innerhalb der `MainPage` `"Main"`-Route anzuzeigen! ## Nützliche Informationen @@ -77,4 +87,4 @@ Wenn du anstelle von **MVVM** das **MVUX** verwendest, solltest du darauf achten ## Anwendung starten -Nun sind wir auch schon fertig mit der Routen Registrierung und können die Anwendung starten. Wenn du nun die App startest, solltest du in der Lage sein, die `MainPage` zu sehen und von dort aus zu den anderen Seiten zu navigieren. +Nun sind wir auch schon fertig mit der Routen Registrierung und können die Anwendung starten. Wenn du nun die App startest, solltest du in der Lage sein, die `MainPage` zu sehen und von dort aus zu den anderen Seiten zu navigieren. Diese sollten dann im `Content` Bereich der `NavigationView` angezeigt werden, wenn du alle Schritte bisher befolgt hast. diff --git a/docs/articles/de/Navigation/toc.yml b/docs/articles/de/Navigation/toc.yml index 628fd7d..2f75538 100644 --- a/docs/articles/de/Navigation/toc.yml +++ b/docs/articles/de/Navigation/toc.yml @@ -1,5 +1,5 @@ items: - - name: Möglichkeiten für die Navigation in einer Uno App + - name: Möglichkeiten für die Navigation in unseren Uno Apps uid: DevTKSS.Uno.Navigation.Navigation-Options.de href: Navigation-Options-de.md - name: Navigation mit Uno Extensions @@ -7,21 +7,21 @@ items: href: Extensions-Navigation-de.md - name: Erstellen oder upgraden items: - - name: "App erstellen (Wizard/CLI)" + - name: "Tutorial: Neue Uno App erstellen (Wizard/CLI)" uid: DevTKSS.Uno.Setup.HowTo-CreateNewUnoApp.de href: ../HowTo-CreateApp-de.md - - name: "Eine bestehende App upgraden" + - name: "Tutorial: Eine bestehende Uno App upgraden" uid: DevTKSS.Uno.ExtensionsNavigation.UpgradeExistingApp.de href: HowTo-UpgradeExistingApp-de.md - - name: "UI mit NavigationView definieren" + - name: "Tutorial: UI mit NavigationView definieren" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.de href: HowTo-Defining-UI-NavigationView-de.md - - name: "Routen registrieren" + - name: "Anleitung: Registrieren und Verwalten von Routen" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-RegisterRoutes.de href: HowTo-RegisterRoutes-de.md - - name: Definieren einer Navigation im Model oder ViewModel + - name: "Tutorial: Definieren einer Navigation im Model oder ViewModel" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-DefiningModelOrViewModel.de href: HowTo-ModelDefinition-de.md - - name: Reagieren auf Routen Änderungen + - name: "Tutorial: Reagieren auf Routen Änderungen" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-ChangeRoutes.de href: HowTo-ChangeRoutes-de.md \ No newline at end of file diff --git a/docs/articles/en/HowTo-Using-DI-in-ctor-en.md b/docs/articles/en/HowTo-Using-DI-in-ctor-en.md index ca40687..ae2a27b 100644 --- a/docs/articles/en/HowTo-Using-DI-in-ctor-en.md +++ b/docs/articles/en/HowTo-Using-DI-in-ctor-en.md @@ -3,9 +3,9 @@ uid: DevTKSS.Uno.Setup.Using-DI-in-ctor.en --- ## Guide: Use Constructor Parameters for Dependency Injection -This guide assumes you've already created a Model, ViewModel, or a service class. If not, here's a quick guide to do that: (xref:DevTKSS.Uno.Setup.HowTo-AddingNew-VM-Class-Record.en) +This guide assumes you've already created a Model, ViewModel, or a service class. If not, here's a [quick guide to do that](xref:DevTKSS.Uno.Setup.HowTo-AddingNew-VM-Class-Record.en). -To use Dependency Injection in your Model, ViewModel, or any class, simply add the required (ideally) interfaces and/or service classes as constructor parameters. The DI container will provide them at runtime. +To use **Dependency Injection** in your Model, ViewModel, or any class, simply add the required (*ideally*) interfaces and/or service classes as constructor parameters. The DI container will provide them at runtime. ## [In MVUX](#tab/model-with-di-params) diff --git a/docs/articles/en/Introduction-en.md b/docs/articles/en/Introduction-en.md index 5b866f2..9dd2612 100644 --- a/docs/articles/en/Introduction-en.md +++ b/docs/articles/en/Introduction-en.md @@ -4,23 +4,37 @@ uid: DevTKSS.Uno.SampleApps.Intro.en # Hello and Welcome to the Documentation and Tutorials -This documentation provides insights into various sample applications built using the Uno Platform. These samples are designed to assist developers of all skill levels in understanding and implementing the showcased concepts effectively. +Here you will find practical guides and insights into various sample applications built using the **Uno Platform**. +The tutorials help you—regardless of your prior knowledge—quickly understand the concepts shown and implement them directly. -The samples in this Repository are meant to help other Developers, independent to their pre-knowledge, get an Idea of how to use the shown things. +**🎯 Goal:** Community Tutorials to Support developers of all experience levels in getting started with the Uno Platform. - +--- + +## First Steps + +- [Set Up Development Environment for Uno Platform App Development](xref:DevTKSS.Uno.Setup.DevelopmentEnvironment.en) +- [Resource Collection for Getting Started with Uno App Development](xref:DevTKSS.Uno.ResourcesLookup.en) + +--- -## Current Samples List +## Current Sample Apps -To give you a quick overview of this Documentation, here is a List of quick links to the included Sample Apps. For future and more detailed Information, please lookup the depending Chapter via the Table of Contents. +Here is a quick overview of the included samples. You can find detailed information in the respective chapter of the table of contents. -- MvuxGallery - - [Docs](xref:DevTKSS.Uno.SampleApps.MvuxGallery.Overview.en) - - [source code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/) -- Mvux.XamlNavigationApp - - [Docs](xref:DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.en) - - [source code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1/) +### MvuxGallery + +- [View Documentation](xref:DevTKSS.Uno.SampleApps.MvuxGallery.Overview.en) +- [View Source Code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/) + +### XamlNavigationApp (Mvux) + +- [NavigationView in MVUX or MVVM + XAML](xref:DevTKSS.Uno.ExtensionsNavigation.Overview.en) +- [View Source Code](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp/) + +--- -## Next Steps +## Additional Resources -- [How To: Setup Development Environment for Uno Platform App Development](xref:DevTKSS.Uno.Setup.DevelopmentEnvironment.en) +- [API Documentation](~/api/index.md) +- [Uno Platform Official Documentation](https://platform.uno/docs/) diff --git a/docs/articles/en/MvuxGallery-Overview-en.md b/docs/articles/en/MvuxGallery-Overview-en.md index a80d809..9ee2a2c 100644 --- a/docs/articles/en/MvuxGallery-Overview-en.md +++ b/docs/articles/en/MvuxGallery-Overview-en.md @@ -15,12 +15,12 @@ As it contains already a lot of Controls and Features, I decided to create some Here is a list of Controls and Features you can explore in the MvuxGallery App with links to their Source code in the MvuxGallery App: - [Card](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/SimpleCardsPage.xaml) -- [Counter](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/CounterPage.xaml) -- [FeedView + GridView](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/DashboardPage.xaml) -- [FeedView + ListView](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/ListboardPage.xaml) -- [DataTemplate centralized Resource Definition](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Styles/Generic.xaml) +- [Counter](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/CounterPage.xaml) and [CounterModel](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/ViewModels/CounterModel.cs) +- [FeedView + GridView](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/DashboardPage.xaml) and [Model](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/ViewModels/DashboardModel.cs) +- [FeedView + ListView](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/ListboardPage.xaml) and [Model](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/ViewModels/ListboardModel.cs) +- [DataTemplate centralized Style Resource Definition](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Styles/Generic.xaml) - [`ItemOverlayTemplate` DataTemplate](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Styles/Generic.xaml) (*Layout replicated from WinUI 3 Gallery*) -- [TabBar and TabBarItem](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/DashboardPage.xaml) and [Model for Binding Items to ListFeed](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/DashboardPage.xaml.cs) +- [TabBar and TabBarItem](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/Views/DashboardPage.xaml) and [Model for Binding Items to ListFeed](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.Samples.MvuxGallery/Presentation/ViewModels/DashboardModel.cs) ## Sampled Uno.Extensions diff --git a/docs/articles/en/Navigation/Extensions-Navigation-en.md b/docs/articles/en/Navigation/Extensions-Navigation-en.md index d75cb6a..4338408 100644 --- a/docs/articles/en/Navigation/Extensions-Navigation-en.md +++ b/docs/articles/en/Navigation/Extensions-Navigation-en.md @@ -49,7 +49,7 @@ Once you have completed this step, we will continue with the implementation of n --- -- [Here you can find the source code of the sample application XamlNavigationApp used](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1) +- [Here you can find the source code of the sample application XamlNavigationApp used](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp) ### Uno Documentation Links diff --git a/docs/articles/en/Navigation/HowTo-ChangeRoutes-en.md b/docs/articles/en/Navigation/HowTo-ChangeRoutes-en.md index 0373362..86c957d 100644 --- a/docs/articles/en/Navigation/HowTo-ChangeRoutes-en.md +++ b/docs/articles/en/Navigation/HowTo-ChangeRoutes-en.md @@ -120,7 +120,7 @@ If you haven't done this yet, it's very easy to do it afterwards: Now we only need the actual reaction to the route change. We do this in the `OnRouteChanged` method, which we registered in the constructor earlier. Here is an example of how you can implement this: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainModel.cs#L19-L22)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs#L19-L22)] **What happens here?** @@ -141,7 +141,7 @@ Congratulations! You have successfully learned how to respond to route changes i **Here is the complete code you should have in your Model from this tutorial:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/Presentation/MainModel.cs#L3-L25)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/Presentation/MainModel.cs#L3-L25)] ## Links to Uno Documentation diff --git a/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md b/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md index dc936b6..af389fa 100644 --- a/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md +++ b/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md @@ -27,22 +27,22 @@ From this starting point, first remove the `StackPanel` including the controls i ```xml - - - - + + + + - - - - - - - + + + + + + + ``` @@ -67,7 +67,7 @@ Now we want to add the properties enabled by the extension, so-called `Attached + IsPaneToggleButtonVisible="True" PaneDisplayMode="Auto"> @@ -140,7 +140,7 @@ Now we want to add the properties enabled by the extension, so-called `Attached *The naming is by no means a coincidence!* >[!NOTE] - > The "Visibility" navigator is the available identifier for this property according to the documentation. + > The "Visibility" navigator is the only available identifier for this property [according to the Uno documentation](https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Navigation/HowTo-Regions.html#properties-in-the-region-class). ## Next Steps diff --git a/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md b/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md index 1477701..c19cd57 100644 --- a/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md +++ b/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md @@ -4,7 +4,7 @@ uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-RegisterRoutes.en # How-To: Register and Manage Routes -With `Uno.Extensions.Navigation`, we use a central definition of **route registration** handled in the App class [`App.xaml.cs`(source link)](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs), which can simply be thought of as a map. +With `Uno.Extensions.Navigation`, we use a central definition of **route registration** handled in the App class [`App.xaml.cs`(source link)](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps/blob/master/src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs), which can simply be thought of as a map. ## Prerequisites @@ -22,7 +22,7 @@ Before you start with route registration, you need two things: Add the required method to your App class below the `OnLaunched` method as follows: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L82)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L82)] ## Defining the `ViewMap`'s @@ -40,7 +40,7 @@ If additional data objects are required when navigating this route, you convert For example, this is what it looks like in the XamlNavigationApp, where I no longer needed `Entity` and converted this route back accordingly: -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L83-L89)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L83-L89)] ## Hierarchically Structured `RoutesMap`'s @@ -65,7 +65,7 @@ Now, on the `MainPage`, we might want to use a TabBar, NavigationBar, a Frame wi **We do this, for example, like this:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp-1/App.xaml.cs#L96-L101)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L96-L101)] Here you can see that I added another page, the `DashboardPage`, and created a Model for it named `DashboardModel`. I also nested the `Second` route into the `RouteMap` of the `Main` route. diff --git a/docs/articles/en/Navigation/Navigation-Options-en.md b/docs/articles/en/Navigation/Navigation-Options-en.md index c8ee8f7..2898c1b 100644 --- a/docs/articles/en/Navigation/Navigation-Options-en.md +++ b/docs/articles/en/Navigation/Navigation-Options-en.md @@ -2,7 +2,7 @@ uid: DevTKSS.Uno.Navigation.Navigation-Options.en --- -# How To: Choose Navigation Options for an Uno App +# Navigation Options in an Uno App Every application that comprises more than a single page benefits from the presence of a well-thought-out **navigation**. diff --git a/docs/articles/en/Navigation/toc.yml b/docs/articles/en/Navigation/toc.yml index 0875654..9d0385a 100644 --- a/docs/articles/en/Navigation/toc.yml +++ b/docs/articles/en/Navigation/toc.yml @@ -1,5 +1,5 @@ items: - - name: "Navigation Options in an Uno App" + - name: "Navigation Options in our Uno Apps" uid: DevTKSS.Uno.Navigation.Navigation-Options.en href: Navigation-Options-en.md - name: "Navigation with Uno Extensions" @@ -7,21 +7,21 @@ items: href: Extensions-Navigation-en.md - name: Create or Upgrade items: - - name: "Create App (Wizard/CLI)" + - name: "How To: Create new Uno App (Wizard/CLI)" uid: DevTKSS.Uno.Setup.HowTo-CreateNewUnoApp.en href: ../HowTo-CreateApp-en.md - - name: "Upgrade an Existing App" + - name: "How To: Upgrade an Existing Uno App" uid: DevTKSS.Uno.ExtensionsNavigation.UpgradeExistingApp.en href: HowTo-UpgradeExistingApp-en.md - - name: "Define UI with NavigationView" + - name: "How To: Define UI with NavigationView" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-Defining-UI.en href: HowTo-Defining-UI-NavigationView-en.md - - name: "Register Routes" + - name: "How To: Register Routes" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-RegisterRoutes.en href: HowTo-RegisterRoutes-en.md - - name: "Define Navigation in Model or ViewModel" + - name: "How to: Define Navigation in Model or ViewModel" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-DefiningModelOrViewModel.en href: HowTo-ModelDefinition-en.md - - name: "React to Route Changes" + - name: "How to: React to Route Changes" uid: DevTKSS.Uno.ExtensionsNavigation.HowTo-ChangeRoutes.en href: HowTo-ChangeRoutes-en.md \ No newline at end of file diff --git a/docs/articles/en/toc.yml b/docs/articles/en/toc.yml index c848deb..f094fcd 100644 --- a/docs/articles/en/toc.yml +++ b/docs/articles/en/toc.yml @@ -16,7 +16,7 @@ - name: "Create a New Uno App" uid: DevTKSS.Uno.Setup.HowTo-CreateNewUnoApp.en href: HowTo-CreateApp-en.md - - name: "Add Pages" + - name: "Add new Pages" uid: DevTKSS.Uno.Setup.HowTo-AddingNewPages.en href: HowTo-Adding-New-Pages-en.md - name: "Define New Class or Record ViewModels" From db217a1c0c75f8b124c0529516029c68f3c79fba Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:17:39 +0100 Subject: [PATCH 4/8] chore: Update links --- docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md | 2 +- docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md b/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md index da7f48d..48dd1e1 100644 --- a/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md +++ b/docs/articles/de/Navigation/HowTo-RegisterRoutes-de.md @@ -68,7 +68,7 @@ Nun wollen wir aber auf der `MainPage` vielleicht eine TabBar, NavigationBar, ei **Das machen wir beispielsweise so:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L91-L103)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L88-L103)] Hier siehst du, dass ich: diff --git a/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md b/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md index c19cd57..5113c9e 100644 --- a/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md +++ b/docs/articles/en/Navigation/HowTo-RegisterRoutes-en.md @@ -65,7 +65,7 @@ Now, on the `MainPage`, we might want to use a TabBar, NavigationBar, a Frame wi **We do this, for example, like this:** -[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L96-L101)] +[!code-csharp[](../../../../src/DevTKSS.Uno.XamlNavigationApp/App.xaml.cs#L88-L103)] Here you can see that I added another page, the `DashboardPage`, and created a Model for it named `DashboardModel`. I also nested the `Second` route into the `RouteMap` of the `Main` route. From 3d876f95cd2b052d18405086aa18a7eb458d5663 Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:19:23 +0100 Subject: [PATCH 5/8] chore: move files to enable devserver in vs code --- {src/.vscode => .vscode}/launch.json | 0 {src/.vscode => .vscode}/tasks.json | 0 src/.vscode/extensions.json | 5 ----- src/.vscode/settings.json | 10 ---------- 4 files changed, 15 deletions(-) rename {src/.vscode => .vscode}/launch.json (100%) rename {src/.vscode => .vscode}/tasks.json (100%) delete mode 100644 src/.vscode/extensions.json delete mode 100644 src/.vscode/settings.json diff --git a/src/.vscode/launch.json b/.vscode/launch.json similarity index 100% rename from src/.vscode/launch.json rename to .vscode/launch.json diff --git a/src/.vscode/tasks.json b/.vscode/tasks.json similarity index 100% rename from src/.vscode/tasks.json rename to .vscode/tasks.json diff --git a/src/.vscode/extensions.json b/src/.vscode/extensions.json deleted file mode 100644 index a63ad40..0000000 --- a/src/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "unoplatform.vscode" - ], -} diff --git a/src/.vscode/settings.json b/src/.vscode/settings.json deleted file mode 100644 index 048b4f9..0000000 --- a/src/.vscode/settings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - "*.xaml": "$(capture).xaml.cs" - }, - "files.associations": { - "global.json": "jsonc" - }, -} \ No newline at end of file From 6cc15331d8eacafdf3042f8736f014eda474a14d Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:27:22 +0100 Subject: [PATCH 6/8] chore: Update Video Link --- .../de/Navigation/HowTo-Defining-UI-NavigationView-de.md | 2 +- .../en/Navigation/HowTo-Defining-UI-NavigationView-en.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md b/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md index e67c6a1..ad7d180 100644 --- a/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md +++ b/docs/articles/de/Navigation/HowTo-Defining-UI-NavigationView-de.md @@ -14,7 +14,7 @@ Wir haben uns nun zuvor im Intro angeschaut, was wir mit der `Uno.Extensions.Nav In diesem Video werden wir uns zusammen anschauen, wie du ein `NavigationView`-Steuerelement in einer XAML-Markup-App einrichtest und verwendest. Wir werden die Navigation zwischen verschiedenen Seiten implementieren und dabei die MVUX-Prinzipien anwenden. Den Code kannst du dabei direkt aus dem Code hierunter kopieren und in deine Anwendung einfügen, wenn du möchtest, aber aus eigener Erfahrung heraus hilft es dir mehr, den Code selber zu schreiben und dabei zuzuschauen, wie es funktioniert. So kannst du auch besser verstehen, was du tust und warum. -![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://youtube.com/embed/vVvnK02r2ug) +![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://www.youtube.com/embed/knt2oOjHH30) ## Implementierung der NavigationView diff --git a/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md b/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md index af389fa..eaad7f6 100644 --- a/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md +++ b/docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md @@ -17,7 +17,7 @@ In this video, we will look together at how to set up and use a `NavigationView` > [!NOTE] > This video is currently only available in German, but transcriptions have been added to the video description, which should be usable through YouTube's auto-translate feature. You can also enable auto-translated subtitles in YouTube to follow along in your preferred language. -![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://youtube.com/embed/knt2oOjHH30) +![Navigation-in-Xaml-und-Mvux-mit-Navigation-View](https://www.youtube.com/embed/knt2oOjHH30) ## Implementing the NavigationView From b72f70ea459d85019460303b238d85dc08be6b8f Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:31:11 +0100 Subject: [PATCH 7/8] ci: remove event on PR, trigger only on push --- .github/workflows/build-deploy-docs.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml index 0d8f10d..972ea4f 100644 --- a/.github/workflows/build-deploy-docs.yml +++ b/.github/workflows/build-deploy-docs.yml @@ -8,12 +8,6 @@ on: - 'src/**' - 'README.md' - '.github/workflows/build-deploy-docs.yml' - pull_request: - branches: [ master ] - paths: - - 'docs/**' - - 'src/**' - - 'README.md' workflow_dispatch: permissions: From 7c3e1b58ce978279650b5543df25fe50d111d661 Mon Sep 17 00:00:00 2001 From: DevTKSS Date: Thu, 4 Dec 2025 18:35:54 +0100 Subject: [PATCH 8/8] chore: update Readme Description of seperated Sample --- src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md | 8 ++------ src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md | 10 +++------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md index 2862697..bffd189 100644 --- a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.de.md @@ -14,12 +14,8 @@ Weitere Informationen zur Verwendung des Uno.Sdk oder zum Aktualisieren der Uno ## Tutorial zum Mitmachen -Diese Beispiel-App ist Teil eines Community-Tutorial-Videos, das dich durch den Prozess des Aufbaus einer XAML-Navigations-App mit der Uno Platform führt. - -Bitte wähle die Sprache deiner Wahl, um dem Tutorial zu folgen: - -- [Deutsch](../../docs/articles/de/Navigation/Extensions-Navigation-de.md) -- [Englisch](../../docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md) +Diese Beispiel-App hat bisher kein dokumentiertes Tutorial, aber du kannst dir schon den auf YouTube verfügbaren Video-Guide ansehen: +[How To: Binden von ListState und ImmutableList zu FeedView & ListView im UI | Uno Community Tutorial](https://youtu.be/wOsSlv1YFic) ## Mitwirken diff --git a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md index a03cef3..5ed5d21 100644 --- a/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md +++ b/src/DevTKSS.Uno.SimpleMemberSelectionApp/ReadMe.en.md @@ -14,13 +14,9 @@ For more information on how to use the Uno.Sdk or upgrade Uno Platform packages ## Tutorial to follow along with this sample -This sample app is part of a Community Tutorial Video that will guide you through the process of building a XAML Navigation App using the Uno Platform. - -Please select the language of your choice to follow along: - -- [English](../../docs/articles/en/Navigation/HowTo-Defining-UI-NavigationView-en.md) -- [German](../../docs/articles/de/Navigation/Extensions-Navigation-de.md) +This sample app has no Documented Tutorial by now, but you can check out the Video Guide already available on YouTube: +[How To: Binden von ListState und ImmutableList zu FeedView & ListView im UI | Uno Community Tutorial](https://youtu.be/wOsSlv1YFic) (Deutsch => Switch on Subtitles for English) ## Contributing -If you want to contribute to this sample, please check out the [GitHub repository](www.github.com/DevTKSS/DevTKSS.Uno.SampleApps) +If you want to contribute to this sample, please check out the [GitHub repository](https://github.com/DevTKSS/DevTKSS.Uno.SampleApps)