├── .github ├── configs │ └── renovate-config.js └── workflows │ ├── dotnet.yml │ └── renovate.yml ├── .gitignore ├── LICENSE ├── README.md ├── renovate.json ├── res ├── banner.png ├── banner.xcf └── icon.svg └── src ├── AvaloniaInside.Shell.sln ├── AvaloniaInside.Shell ├── .gitignore ├── AppBuilderExtensions.cs ├── AvaloniaInside.Shell.csproj ├── BindingNavigate.cs ├── BindingNavigateConverter.cs ├── Data │ ├── Host.cs │ ├── IItem.cs │ ├── Route.cs │ └── SideMenuItem.cs ├── Default.axaml ├── DefaultNavigationUpdateStrategy.cs ├── DefaultNavigationViewLocator.cs ├── HostItemChangeEventArgs.cs ├── HostNavigationChain.cs ├── HostedItemsHelper.cs ├── IHostItems.cs ├── INavigateStrategy.cs ├── INavigationBarProvider.cs ├── INavigationLifecycle.cs ├── INavigationRegistrar.cs ├── INavigationUpdateStrategy.cs ├── INavigationViewLocator.cs ├── INavigator.cs ├── INavigatorLifecycle.cs ├── IPresenter.cs ├── IPresenterProvider.cs ├── ISelectableHostItems.cs ├── NaturalNavigateStrategy.cs ├── NavigateResult.cs ├── NavigateType.cs ├── NavigationBar.cs ├── NavigationBarAttachType.cs ├── NavigationChain.cs ├── NavigationNode.cs ├── NavigationNodeType.cs ├── NavigationRegistrar.cs ├── NavigationStack.cs ├── NavigationStackChanges.cs ├── Navigator.Attach.cs ├── Navigator.cs ├── Page.cs ├── Platform │ ├── Android │ │ ├── AndroidDefaultPageSlide.cs │ │ ├── EmphasizedEasing.cs │ │ ├── FastOutExtraSlowInEasing.cs │ │ └── MaterialListPageSlide.cs │ ├── Ios │ │ ├── AlertTransition.cs │ │ ├── IosModalSlide.cs │ │ └── IosPageSlide.cs │ ├── PlatformBasePageTransition.cs │ ├── PlatformSetup.cs │ └── Windows │ │ ├── DrillInNavigationTransition.cs │ │ ├── EntranceNavigationTransition.cs │ │ └── ListSlideNavigationTransition.cs ├── Presenters │ ├── GenericPresenter.cs │ ├── ModalPresenter.cs │ ├── PresenterBase.cs │ ├── PresenterProvider.cs │ └── RemovePresenter.cs ├── Properties │ └── AssemblyInfo.cs ├── RelativeNavigateStrategy.cs ├── ShellView.ItemNavigator.cs ├── ShellView.SideMenu.cs ├── ShellView.cs ├── SideMenu.cs ├── StackContentView.cs ├── TabPage.cs ├── Theme │ └── Default │ │ ├── Colors.axaml │ │ ├── Controls.axaml │ │ ├── NavigationBar.axaml │ │ ├── Page.axaml │ │ ├── ShellView.axaml │ │ ├── SideMenu.axaml │ │ └── TabPage.axaml └── UriExtensions.cs ├── Directory.Build.props ├── Directory.Packages.props └── Example ├── ShellBottomCustomNavigator ├── .gitignore ├── ShellBottomCustomNavigator.Android │ ├── Icon.png │ ├── MainActivity.cs │ ├── Properties │ │ └── AndroidManifest.xml │ ├── Resources │ │ ├── AboutResources.txt │ │ ├── drawable-night-v31 │ │ │ └── avalonia_anim.xml │ │ ├── drawable-v31 │ │ │ └── avalonia_anim.xml │ │ ├── drawable │ │ │ └── splash_screen.xml │ │ ├── values-night │ │ │ └── colors.xml │ │ ├── values-v31 │ │ │ └── styles.xml │ │ └── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ └── ShellBottomCustomNavigator.Android.csproj ├── ShellBottomCustomNavigator.Browser │ ├── AppBundle │ │ ├── Logo.svg │ │ ├── app.css │ │ ├── favicon.ico │ │ ├── index.html │ │ └── main.js │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ShellBottomCustomNavigator.Browser.csproj │ └── runtimeconfig.template.json ├── ShellBottomCustomNavigator.Desktop │ ├── Program.cs │ ├── ShellBottomCustomNavigator.Desktop.csproj │ └── app.manifest ├── ShellBottomCustomNavigator.iOS │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Resources │ │ └── LaunchScreen.xib │ └── ShellBottomCustomNavigator.iOS.csproj ├── ShellBottomCustomNavigator.sln └── ShellBottomCustomNavigator │ ├── App.axaml │ ├── App.axaml.cs │ ├── Assets │ ├── Icons │ │ └── truck-fast-solid.png │ ├── avalonia-logo.ico │ ├── images │ │ ├── Donna_Moore.jpg │ │ ├── HT-1000.jpg │ │ ├── HT-1001.jpg │ │ ├── HT-1002.jpg │ │ ├── HT-1003.jpg │ │ ├── HT-1007.jpg │ │ ├── HT-1010.jpg │ │ ├── HT-1011.jpg │ │ ├── HT-1020.jpg │ │ ├── HT-1021.jpg │ │ ├── HT-1022.jpg │ │ ├── HT-1023.jpg │ │ ├── HT-1030.jpg │ │ ├── HT-1031.jpg │ │ ├── HT-1032.jpg │ │ ├── HT-1035.jpg │ │ ├── HT-1036.jpg │ │ ├── HT-1037.jpg │ │ ├── HT-1040.jpg │ │ ├── HT-1041.jpg │ │ ├── HT-1042.jpg │ │ ├── HT-1050.jpg │ │ ├── HT-1051.jpg │ │ ├── HT-1052.jpg │ │ ├── HT-1055.jpg │ │ ├── HT-1056.jpg │ │ ├── HT-1060.jpg │ │ ├── HT-1061.jpg │ │ ├── HT-1062.jpg │ │ ├── HT-1063.jpg │ │ ├── HT-1064.jpg │ │ ├── HT-1065.jpg │ │ ├── HT-1066.jpg │ │ ├── HT-1067.jpg │ │ ├── HT-1068.jpg │ │ ├── HT-1069.jpg │ │ ├── HT-1070.jpg │ │ ├── HT-1071.jpg │ │ ├── HT-1072.jpg │ │ ├── HT-1073.jpg │ │ ├── HT-1080.jpg │ │ ├── HT-1081.jpg │ │ ├── HT-1082.jpg │ │ ├── HT-1083.jpg │ │ ├── HT-1085.jpg │ │ ├── HT-1090.jpg │ │ ├── HT-1091.jpg │ │ ├── HT-1092.jpg │ │ ├── HT-1095.jpg │ │ ├── HT-1096.jpg │ │ ├── HT-1097.jpg │ │ ├── HT-1100.jpg │ │ ├── HT-1101.jpg │ │ ├── HT-1102.jpg │ │ ├── HT-1103.jpg │ │ ├── HT-1104.jpg │ │ ├── HT-1105.jpg │ │ ├── HT-1106.jpg │ │ ├── HT-1107.jpg │ │ ├── HT-1110.jpg │ │ ├── HT-1111.jpg │ │ ├── HT-1112.jpg │ │ ├── HT-1113.jpg │ │ ├── HT-1114.jpg │ │ ├── HT-1115.jpg │ │ ├── HT-1116.jpg │ │ ├── HT-1117.jpg │ │ ├── HT-1118.jpg │ │ ├── HT-1119.jpg │ │ ├── HT-1120.jpg │ │ ├── HT-1137.jpg │ │ ├── HT-1138.jpg │ │ ├── HT-1210.jpg │ │ ├── HT-1251.jpg │ │ ├── HT-1252.jpg │ │ ├── HT-1253.jpg │ │ ├── HT-1254.jpg │ │ ├── HT-1255.jpg │ │ ├── HT-1256.jpg │ │ ├── HT-1257.jpg │ │ ├── HT-1258.jpg │ │ ├── HT-1500.jpg │ │ ├── HT-1501.jpg │ │ ├── HT-1502.jpg │ │ ├── HT-1600.jpg │ │ ├── HT-1601.jpg │ │ ├── HT-1602.jpg │ │ ├── HT-1603.jpg │ │ ├── HT-2000.jpg │ │ ├── HT-2001.jpg │ │ ├── HT-2002.jpg │ │ ├── HT-2020.jpg │ │ ├── HT-2025.jpg │ │ ├── HT-2026.jpg │ │ ├── HT-2027.jpg │ │ ├── HT-6100-large.jpg │ │ ├── HT-6100.jpg │ │ ├── HT-6101.jpg │ │ ├── HT-6102.jpg │ │ ├── HT-6110.jpg │ │ ├── HT-6111.jpg │ │ ├── HT-6120-large.jpg │ │ ├── HT-6120.jpg │ │ ├── HT-6121.jpg │ │ ├── HT-6122.jpg │ │ ├── HT-6123.jpg │ │ ├── HT-6130.jpg │ │ ├── HT-6131.jpg │ │ ├── HT-6132.jpg │ │ ├── HT-7000.jpg │ │ ├── HT-7010.jpg │ │ ├── HT-7020.jpg │ │ ├── HT-7030.jpg │ │ ├── HT-7777-large.jpg │ │ ├── HT-7777.jpg │ │ ├── HT-8000.jpg │ │ ├── HT-8001.jpg │ │ ├── HT-8002.jpg │ │ ├── HT-8003.jpg │ │ ├── HT-9991.jpg │ │ ├── HT-9992.jpg │ │ ├── HT-9993.jpg │ │ ├── HT-9994.jpg │ │ ├── HT-9995.jpg │ │ ├── HT-9996.jpg │ │ ├── HT-9997.jpg │ │ ├── HT-9998.jpg │ │ ├── HT-9999.jpg │ │ ├── John_Miller.png │ │ ├── PF-1000.jpg │ │ ├── bigimgs │ │ │ ├── 273303_low_jpg_srgb.jpg │ │ │ ├── 273537_low_jpg_srgb.jpg │ │ │ └── 274731_high_jpg_eci_rgb.jpg │ │ ├── johnDoe.png │ │ ├── nature │ │ │ ├── ALotOfElephants.jpg │ │ │ ├── ALotOfElephants_small.jpg │ │ │ ├── elephant.jpg │ │ │ ├── flatFish.jpg │ │ │ └── horses.jpg │ │ └── screw.jpg │ └── omid-img.jpg │ ├── Converters │ └── BitmapAssetValueConverter.cs │ ├── Helper.cs │ ├── Helpers │ └── ImageHelper.cs │ ├── Models │ ├── DummyPlace.cs │ └── ProductDto.cs │ ├── Resources │ └── Products.json │ ├── Roots.xml │ ├── ShellBottomCustomNavigator.csproj │ ├── Styles.axaml │ ├── ViewLocator.cs │ ├── ViewModels │ ├── HomePageViewModel.cs │ ├── MainViewModel.cs │ ├── SettingViewModel.cs │ ├── ShopViewModels │ │ ├── ProductCatalogFilterViewModel.cs │ │ ├── ProductCatalogViewModel.cs │ │ └── ProductDetailViewModel.cs │ ├── ViewModelBase.cs │ └── WelcomeViewModel.cs │ └── Views │ ├── CatView.axaml │ ├── CatView.axaml.cs │ ├── DogView.axaml │ ├── DogView.axaml.cs │ ├── FontIconImageSource.cs │ ├── HomePage.axaml │ ├── HomePage.axaml.cs │ ├── MainTabControl.axaml │ ├── MainTabControl.axaml.cs │ ├── MainView.axaml │ ├── MainView.axaml.cs │ ├── MainWindow.axaml │ ├── MainWindow.axaml.cs │ ├── PetsTabControlView.axaml │ ├── PetsTabControlView.axaml.cs │ ├── ProfileView.axaml │ ├── ProfileView.axaml.cs │ ├── SecondView.axaml │ ├── SecondView.axaml.cs │ ├── SettingView.axaml │ ├── SettingView.axaml.cs │ ├── ShopViews │ ├── ConfirmationCloseView.axaml │ ├── ConfirmationCloseView.axaml.cs │ ├── ProductCatalogFilterView.axaml │ ├── ProductCatalogFilterView.axaml.cs │ ├── ProductCatalogView.axaml │ ├── ProductCatalogView.axaml.cs │ ├── ProductDetailView.axaml │ ├── ProductDetailView.axaml.cs │ └── StarsControl.cs │ ├── SimpleDialog.axaml │ ├── SimpleDialog.axaml.cs │ ├── WelcomeView.axaml │ ├── WelcomeView.axaml.cs │ └── Widgets │ ├── CalendarWidgetView.axaml │ ├── CalendarWidgetView.axaml.cs │ ├── UserProfileWidgetView.axaml │ ├── UserProfileWidgetView.axaml.cs │ ├── WeatherView.axaml │ └── WeatherView.axaml.cs └── ShellExample ├── .gitignore ├── ShellExample.Android ├── Icon.png ├── MainActivity.cs ├── Properties │ └── AndroidManifest.xml ├── Resources │ ├── drawable │ │ └── splash_screen.xml │ └── values │ │ ├── colors.xml │ │ └── styles.xml ├── ShellExample.Android.csproj └── SplashActivity.cs ├── ShellExample.Desktop ├── Program.cs ├── ShellExample.Desktop.csproj └── app.manifest ├── ShellExample.Web ├── AppBundle │ ├── Logo.svg │ ├── app.css │ ├── favicon.ico │ ├── index.html │ └── main.js ├── Program.cs ├── Properties │ └── launchSettings.json ├── ShellExample.Web.csproj └── runtimeconfig.template.json ├── ShellExample.iOS ├── AppDelegate.cs ├── Application.cs ├── Entitlements.plist ├── Info.plist ├── Resources │ └── LaunchScreen.xib └── ShellExample.iOS.csproj ├── ShellExample.sln └── ShellExample ├── App.axaml ├── App.axaml.cs ├── Assets ├── Icons │ └── truck-fast-solid.png ├── avalonia-logo.ico ├── images │ ├── Donna_Moore.jpg │ ├── HT-1000.jpg │ ├── HT-1001.jpg │ ├── HT-1002.jpg │ ├── HT-1003.jpg │ ├── HT-1007.jpg │ ├── HT-1010.jpg │ ├── HT-1011.jpg │ ├── HT-1020.jpg │ ├── HT-1021.jpg │ ├── HT-1022.jpg │ ├── HT-1023.jpg │ ├── HT-1030.jpg │ ├── HT-1031.jpg │ ├── HT-1032.jpg │ ├── HT-1035.jpg │ ├── HT-1036.jpg │ ├── HT-1037.jpg │ ├── HT-1040.jpg │ ├── HT-1041.jpg │ ├── HT-1042.jpg │ ├── HT-1050.jpg │ ├── HT-1051.jpg │ ├── HT-1052.jpg │ ├── HT-1055.jpg │ ├── HT-1056.jpg │ ├── HT-1060.jpg │ ├── HT-1061.jpg │ ├── HT-1062.jpg │ ├── HT-1063.jpg │ ├── HT-1064.jpg │ ├── HT-1065.jpg │ ├── HT-1066.jpg │ ├── HT-1067.jpg │ ├── HT-1068.jpg │ ├── HT-1069.jpg │ ├── HT-1070.jpg │ ├── HT-1071.jpg │ ├── HT-1072.jpg │ ├── HT-1073.jpg │ ├── HT-1080.jpg │ ├── HT-1081.jpg │ ├── HT-1082.jpg │ ├── HT-1083.jpg │ ├── HT-1085.jpg │ ├── HT-1090.jpg │ ├── HT-1091.jpg │ ├── HT-1092.jpg │ ├── HT-1095.jpg │ ├── HT-1096.jpg │ ├── HT-1097.jpg │ ├── HT-1100.jpg │ ├── HT-1101.jpg │ ├── HT-1102.jpg │ ├── HT-1103.jpg │ ├── HT-1104.jpg │ ├── HT-1105.jpg │ ├── HT-1106.jpg │ ├── HT-1107.jpg │ ├── HT-1110.jpg │ ├── HT-1111.jpg │ ├── HT-1112.jpg │ ├── HT-1113.jpg │ ├── HT-1114.jpg │ ├── HT-1115.jpg │ ├── HT-1116.jpg │ ├── HT-1117.jpg │ ├── HT-1118.jpg │ ├── HT-1119.jpg │ ├── HT-1120.jpg │ ├── HT-1137.jpg │ ├── HT-1138.jpg │ ├── HT-1210.jpg │ ├── HT-1251.jpg │ ├── HT-1252.jpg │ ├── HT-1253.jpg │ ├── HT-1254.jpg │ ├── HT-1255.jpg │ ├── HT-1256.jpg │ ├── HT-1257.jpg │ ├── HT-1258.jpg │ ├── HT-1500.jpg │ ├── HT-1501.jpg │ ├── HT-1502.jpg │ ├── HT-1600.jpg │ ├── HT-1601.jpg │ ├── HT-1602.jpg │ ├── HT-1603.jpg │ ├── HT-2000.jpg │ ├── HT-2001.jpg │ ├── HT-2002.jpg │ ├── HT-2020.jpg │ ├── HT-2025.jpg │ ├── HT-2026.jpg │ ├── HT-2027.jpg │ ├── HT-6100-large.jpg │ ├── HT-6100.jpg │ ├── HT-6101.jpg │ ├── HT-6102.jpg │ ├── HT-6110.jpg │ ├── HT-6111.jpg │ ├── HT-6120-large.jpg │ ├── HT-6120.jpg │ ├── HT-6121.jpg │ ├── HT-6122.jpg │ ├── HT-6123.jpg │ ├── HT-6130.jpg │ ├── HT-6131.jpg │ ├── HT-6132.jpg │ ├── HT-7000.jpg │ ├── HT-7010.jpg │ ├── HT-7020.jpg │ ├── HT-7030.jpg │ ├── HT-7777-large.jpg │ ├── HT-7777.jpg │ ├── HT-8000.jpg │ ├── HT-8001.jpg │ ├── HT-8002.jpg │ ├── HT-8003.jpg │ ├── HT-9991.jpg │ ├── HT-9992.jpg │ ├── HT-9993.jpg │ ├── HT-9994.jpg │ ├── HT-9995.jpg │ ├── HT-9996.jpg │ ├── HT-9997.jpg │ ├── HT-9998.jpg │ ├── HT-9999.jpg │ ├── John_Miller.png │ ├── PF-1000.jpg │ ├── bigimgs │ │ ├── 273303_low_jpg_srgb.jpg │ │ ├── 273537_low_jpg_srgb.jpg │ │ └── 274731_high_jpg_eci_rgb.jpg │ ├── johnDoe.png │ ├── nature │ │ ├── ALotOfElephants.jpg │ │ ├── ALotOfElephants_small.jpg │ │ ├── elephant.jpg │ │ ├── flatFish.jpg │ │ └── horses.jpg │ └── screw.jpg └── omid-img.jpg ├── Converters └── BitmapAssetValueConverter.cs ├── Helper.cs ├── Helpers └── ImageHelper.cs ├── Models ├── DummyPlace.cs └── ProductDto.cs ├── Resources └── Products.json ├── Roots.xml ├── ShellExample.csproj ├── Styles.axaml ├── ViewLocator.cs ├── ViewModels ├── HomePageViewModel.cs ├── MainViewModel.cs ├── SettingViewModel.cs ├── ShopViewModels │ ├── ProductCatalogFilterViewModel.cs │ ├── ProductCatalogViewModel.cs │ └── ProductDetailViewModel.cs ├── ViewModelBase.cs └── WelcomeViewModel.cs └── Views ├── CatView.axaml ├── CatView.axaml.cs ├── DogView.axaml ├── DogView.axaml.cs ├── FontIconImageSource.cs ├── HomePage.axaml ├── HomePage.axaml.cs ├── MainTabControl.axaml ├── MainTabControl.axaml.cs ├── MainView.axaml ├── MainView.axaml.cs ├── MainWindow.axaml ├── MainWindow.axaml.cs ├── PetsTabControlView.axaml ├── PetsTabControlView.axaml.cs ├── ProfileView.axaml ├── ProfileView.axaml.cs ├── SecondView.axaml ├── SecondView.axaml.cs ├── SettingView.axaml ├── SettingView.axaml.cs ├── ShopViews ├── ConfirmationCloseView.axaml ├── ConfirmationCloseView.axaml.cs ├── ProductCatalogFilterView.axaml ├── ProductCatalogFilterView.axaml.cs ├── ProductCatalogView.axaml ├── ProductCatalogView.axaml.cs ├── ProductDetailView.axaml ├── ProductDetailView.axaml.cs └── StarsControl.cs ├── SimpleDialog.axaml ├── SimpleDialog.axaml.cs ├── WelcomeView.axaml ├── WelcomeView.axaml.cs └── Widgets ├── CalendarWidgetView.axaml ├── CalendarWidgetView.axaml.cs ├── UserProfileWidgetView.axaml ├── UserProfileWidgetView.axaml.cs ├── WeatherView.axaml └── WeatherView.axaml.cs /.github/configs/renovate-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "extends": ["config:recommended", ":disableDependencyDashboard"], 3 | "repositories": ["AvaloniaInside/Shell"], 4 | "platform": "github", 5 | "branchPrefix": "renovate/", 6 | "gitAuthor": "Renovate Bot ", 7 | "automerge": false, 8 | "forkProcessing": "enabled", 9 | "allowedCommands": [".*"], 10 | "prCreation": "immediate" 11 | }; 12 | -------------------------------------------------------------------------------- /.github/workflows/renovate.yml: -------------------------------------------------------------------------------- 1 | name: Renovate Dependency Update 2 | 3 | on: 4 | schedule: 5 | - cron: '0 6 * * *' 6 | workflow_dispatch: 7 | jobs: 8 | renovate: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v4.2.2 13 | - name: Self-hosted Renovate 14 | uses: renovatebot/github-action@v42.0.0 15 | with: 16 | configurationFile: .github/configs/renovate-config.js 17 | token: ${{ secrets.RENOVATE_PAT_TOKEN }} 18 | env: 19 | LOG_LEVEL: debug 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 AvaloniaInside 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json" 3 | } 4 | -------------------------------------------------------------------------------- /res/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/res/banner.png -------------------------------------------------------------------------------- /res/banner.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/res/banner.xcf -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/BindingNavigateConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Globalization; 4 | 5 | namespace AvaloniaInside.Shell; 6 | 7 | public class BindingNavigateConverter : TypeConverter 8 | { 9 | public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType) 10 | { 11 | return sourceType == typeof(string); 12 | } 13 | 14 | public override object? ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object? value) 15 | { 16 | return value is string s ? new BindingNavigate { Path = s } : null; 17 | } 18 | } -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Data/Host.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell.Data; 2 | 3 | public class Host : Route 4 | { 5 | public string Default { get; set; } 6 | } -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Data/IItem.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell.Data; 2 | 3 | public interface IItem 4 | { 5 | 6 | } -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Data/Route.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Collections; 3 | using Avalonia.Metadata; 4 | 5 | namespace AvaloniaInside.Shell.Data; 6 | 7 | public class Route : IItem 8 | { 9 | public string Path { get; set; } 10 | public Type Page { get; set; } 11 | public NavigateType Type { get; set; } = NavigateType.Normal; 12 | 13 | [Content] public AvaloniaList Routes { get; set; } = new(); 14 | } 15 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Data/SideMenuItem.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Media; 2 | 3 | namespace AvaloniaInside.Shell.Data; 4 | 5 | public class SideMenuItem : IItem 6 | { 7 | public string Title { get; set; } 8 | public string Path { get; set; } 9 | public IImage? Icon { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Default.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/DefaultNavigationViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AvaloniaInside.Shell; 4 | 5 | public class DefaultNavigationViewLocator : INavigationViewLocator 6 | { 7 | public object GetView(NavigationNode navigationItem) => 8 | Activator.CreateInstance(navigationItem.Page) 9 | ?? throw new TypeLoadException("Cannot create instance of page type"); 10 | } 11 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/HostItemChangeEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public class HostItemChangeEventArgs 4 | { 5 | public HostItemChangeEventArgs(NavigationChain? oldChain, NavigationChain newChain) 6 | { 7 | OldChain = oldChain; 8 | NewChain = newChain; 9 | } 10 | 11 | public NavigationChain? OldChain { get; } 12 | public NavigationChain NewChain { get; } 13 | } -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/HostNavigationChain.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public class HostNavigationChain : NavigationChain 7 | { 8 | public List Nodes { get; } = new(); 9 | 10 | public IEnumerable AggregatedNodes => Nodes.SelectMany(chain => 11 | chain is HostNavigationChain host 12 | ? host.AggregatedNodes.Append(chain) 13 | : new[] { chain }).Append(this); 14 | } 15 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/IHostItems.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using Avalonia.Controls; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public interface IHostItems 7 | { 8 | IEnumerable? ItemsSource { get; set; } 9 | ItemCollection Items { get; } 10 | } 11 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigateStrategy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace AvaloniaInside.Shell; 6 | 7 | public interface INavigateStrategy 8 | { 9 | Task NavigateAsync(NavigationChain chain, Uri currentUri, string path, CancellationToken cancellationToken); 10 | Task BackAsync(NavigationChain chain, Uri currentUri, CancellationToken cancellationToken); 11 | } 12 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigationBarProvider.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public interface INavigationBarProvider 4 | { 5 | NavigationBar? NavigationBar { get; } 6 | NavigationBar? AttachedNavigationBar { get; } 7 | } 8 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigationLifecycle.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public interface INavigationLifecycle 7 | { 8 | Task InitialiseAsync(CancellationToken cancellationToken); 9 | Task AppearAsync(CancellationToken cancellationToken); 10 | Task DisappearAsync(CancellationToken cancellationToken); 11 | Task ArgumentAsync(object args, CancellationToken cancellationToken); 12 | Task TerminateAsync(CancellationToken cancellationToken); 13 | } 14 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigationRegistrar.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AvaloniaInside.Shell; 4 | 5 | public interface INavigationRegistrar 6 | { 7 | string ApplicationName { get; set; } 8 | Uri RootUri { get; set; } 9 | 10 | void RegisterRoute( 11 | string route, 12 | Type page, 13 | NavigationNodeType type, 14 | NavigateType navigate, 15 | string? defaultPath); 16 | 17 | bool TryGetNode(string path, out NavigationNode node); 18 | } 19 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigationUpdateStrategy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | 6 | namespace AvaloniaInside.Shell; 7 | 8 | public interface INavigationUpdateStrategy 9 | { 10 | event EventHandler HostItemChanged; 11 | Task UpdateChangesAsync( 12 | ShellView shellView, 13 | NavigationStackChanges changes, 14 | NavigateType navigateType, 15 | object? argument, 16 | bool hasArgument, 17 | CancellationToken cancellationToken); 18 | } 19 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/INavigationViewLocator.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public interface INavigationViewLocator 4 | { 5 | object GetView(NavigationNode navigationItem); 6 | } -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/IPresenter.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public interface IPresenter 7 | { 8 | Task PresentAsync(ShellView shellView, NavigationChain chain, NavigateType navigateType, 9 | CancellationToken cancellationToken); 10 | } 11 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/IPresenterProvider.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public interface IPresenterProvider 4 | { 5 | IPresenter For(NavigateType type); 6 | IPresenter Remove(); 7 | } 8 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/ISelectableHostItems.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public interface ISelectableHostItems : IHostItems 7 | { 8 | event EventHandler SelectionChanged; 9 | object? SelectedItem { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigateResult.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public class NavigateResult 4 | { 5 | internal NavigateResult(bool hasArgument, object? argument) 6 | { 7 | HasArgument = hasArgument; 8 | Argument = argument; 9 | } 10 | 11 | public bool HasArgument { get; } 12 | public object? Argument { get; } 13 | 14 | public T? As() => HasArgument && Argument is T argument ? argument : default; 15 | 16 | public static NavigateResult FromResult(T argument) => new(true, argument); 17 | 18 | public static readonly NavigateResult Completed = new NavigateResult(false, null); 19 | } 20 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigateType.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public enum NavigateType 4 | { 5 | Normal, 6 | ReplaceRoot, 7 | Modal, 8 | Replace, 9 | Top, 10 | Clear, 11 | Pop, 12 | HostedItemChange, 13 | } 14 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigationBarAttachType.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public enum NavigationBarAttachType 4 | { 5 | ToShell, 6 | ToFirstHostThenPage, 7 | ToLastPage 8 | } 9 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigationChain.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace AvaloniaInside.Shell; 5 | 6 | public class NavigationChain 7 | { 8 | public NavigationNode Node { get; internal set; } = default!; 9 | public object Instance { get; internal set; } = default!; 10 | public NavigateType Type { get; internal set; } 11 | public Uri Uri { get; internal set; } = default!; 12 | public NavigationChain? Back { get; internal set; } 13 | public bool Hosted { get; internal set; } 14 | 15 | public IEnumerable GetAscendingNodes() 16 | { 17 | yield return this; 18 | if (Back == null) yield break; 19 | 20 | foreach (var node in Back.GetAscendingNodes()) 21 | yield return node; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigationNodeType.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell; 2 | 3 | public enum NavigationNodeType 4 | { 5 | Page, 6 | Host 7 | } 8 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/NavigationStackChanges.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace AvaloniaInside.Shell; 4 | 5 | public class NavigationStackChanges 6 | { 7 | public NavigationChain? Previous { get; set; } 8 | public NavigationChain? Front { get; set; } 9 | public IList? Removed { get; set; } 10 | public IList NewNavigationChains { get; set; } = []; 11 | } 12 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Platform/Android/EmphasizedEasing.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Animation.Easings; 2 | using Avalonia.Media; 3 | using System; 4 | using System.Diagnostics; 5 | 6 | namespace AvaloniaInside.Shell.Platform.Android; 7 | 8 | public class EmphasizedEasing : Easing 9 | { 10 | private PathGeometry _pathGeometry; 11 | 12 | public EmphasizedEasing() 13 | { 14 | _pathGeometry = PathGeometry.Parse("M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1"); 15 | } 16 | 17 | public override double Ease(double input) 18 | { 19 | // Clamp input within [0, 1] 20 | input = Math.Max(0, Math.Min(1, input)); 21 | 22 | if (!_pathGeometry.TryGetPointAtDistance(_pathGeometry.ContourLength * input, out var point)) 23 | { 24 | // Handle the case where TryGetPointAtDistance fails (if needed) 25 | } 26 | Debug.WriteLine(point.ToString()); 27 | 28 | return point.Y; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Presenters/GenericPresenter.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace AvaloniaInside.Shell.Presenters; 5 | 6 | public class GenericPresenter : PresenterBase 7 | { 8 | public override async Task PresentAsync( 9 | ShellView shellView, 10 | NavigationChain chain, 11 | NavigateType navigateType, 12 | CancellationToken cancellationToken) 13 | { 14 | var hostControl = GetHostControl(chain); 15 | 16 | await (shellView.PushViewAsync( 17 | hostControl ?? chain.Instance, 18 | navigateType, 19 | cancellationToken) ?? Task.CompletedTask); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Presenters/ModalPresenter.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace AvaloniaInside.Shell.Presenters; 5 | 6 | public class ModalPresenter : PresenterBase 7 | { 8 | 9 | public override Task PresentAsync(ShellView shellView, 10 | NavigationChain chain, 11 | NavigateType navigateType, 12 | CancellationToken cancellationToken) 13 | { 14 | var hostControl = GetHostControl(chain); 15 | 16 | return shellView.ModalAsync( 17 | hostControl ?? chain.Instance, 18 | navigateType, 19 | cancellationToken) ?? Task.CompletedTask; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Presenters/PresenterProvider.cs: -------------------------------------------------------------------------------- 1 | namespace AvaloniaInside.Shell.Presenters; 2 | 3 | public class PresenterProvider : IPresenterProvider 4 | { 5 | public IPresenter For(NavigateType type) 6 | { 7 | return type switch 8 | { 9 | NavigateType.Modal => new ModalPresenter(), 10 | _ => new GenericPresenter() 11 | }; 12 | } 13 | 14 | public IPresenter Remove() => new RemovePresenter(); 15 | } 16 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Presenters/RemovePresenter.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | 4 | namespace AvaloniaInside.Shell.Presenters; 5 | 6 | public class RemovePresenter : PresenterBase 7 | { 8 | public override Task PresentAsync(ShellView shellView, 9 | NavigationChain chain, 10 | NavigateType navigateType, 11 | CancellationToken cancellationToken) => 12 | shellView?.RemoveViewAsync(chain.Instance, navigateType, cancellationToken) ?? Task.CompletedTask; 13 | } 14 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Metadata; 2 | 3 | [assembly: XmlnsDefinition("https://github.com/avaloniaui", "AvaloniaInside.Shell")] 4 | [assembly: XmlnsDefinition("https://github.com/avaloniaui", "AvaloniaInside.Shell.Data")] 5 | [assembly: XmlnsDefinition("https://github.com/avaloniaui", "AvaloniaInside.Shell.Platform")] 6 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/RelativeNavigateStrategy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace AvaloniaInside.Shell; 6 | 7 | public class RelativeNavigateStrategy : NaturalNavigateStrategy 8 | { 9 | public RelativeNavigateStrategy(INavigationRegistrar navigationRegistrar) : base(navigationRegistrar) 10 | { 11 | } 12 | 13 | public override Task BackAsync(NavigationChain chain, Uri currentUri, CancellationToken cancellationToken) 14 | { 15 | var current = chain.Back; 16 | while (current is HostNavigationChain {} host) 17 | current = host.Back; 18 | 19 | return Task.FromResult(current?.Uri); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Theme/Default/Colors.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | White 7 | 8 | 9 | Black 10 | Black 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Theme/Default/Controls.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/Theme/Default/Page.axaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/AvaloniaInside.Shell/UriExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace AvaloniaInside.Shell; 4 | 5 | public static class UriExtensions 6 | { 7 | public static string GetParentPath(this Uri uri) 8 | { 9 | var finalPath = uri.AbsolutePath.EndsWith("/") 10 | ? (new Uri(uri, "..")).AbsolutePath.TrimEnd('/') 11 | : (new Uri(uri, ".")).AbsolutePath.TrimEnd('/'); 12 | 13 | return finalPath.Length > 0 ? finalPath : "/"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11.2.5 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Icon.png -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Avalonia; 4 | using Avalonia.Android; 5 | using Avalonia.ReactiveUI; 6 | using AvaloniaInside.Shell; 7 | 8 | namespace ShellBottomCustomNavigator.Android; 9 | 10 | [Activity( 11 | Label = "ShellBottomCustomNavigator.Android", 12 | Theme = "@style/MyTheme.NoActionBar", 13 | Icon = "@drawable/icon", 14 | MainLauncher = true, 15 | ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)] 16 | public class MainActivity : AvaloniaMainActivity 17 | { 18 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 19 | { 20 | return base.CustomizeAppBuilder(builder) 21 | .WithInterFont() 22 | .UseShell() 23 | .UseReactiveUI(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-night/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #212121 4 | 5 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-v31/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #FFFFFF 4 | 5 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/favicon.ico -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ShellBottomCustomNavigator.Browser 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 |
19 |

20 | Powered by 21 | Avalonia UI 22 |

23 |
24 | Avalonia Logo 25 |
26 |
27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/main.js: -------------------------------------------------------------------------------- 1 | import { dotnet } from './dotnet.js' 2 | 3 | const is_browser = typeof window != "undefined"; 4 | if (!is_browser) throw new Error(`Expected to be running in a browser`); 5 | 6 | const dotnetRuntime = await dotnet 7 | .withDiagnosticTracing(false) 8 | .withApplicationArgumentsFromQuery() 9 | .create(); 10 | 11 | const config = dotnetRuntime.getConfig(); 12 | 13 | await dotnetRuntime.runMainAndExit(config.mainAssemblyName, [window.location.search]); -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Program.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Versioning; 2 | using System.Threading.Tasks; 3 | using Avalonia; 4 | using Avalonia.Browser; 5 | using Avalonia.ReactiveUI; 6 | using AvaloniaInside.Shell; 7 | using ShellBottomCustomNavigator; 8 | 9 | [assembly: SupportedOSPlatform("browser")] 10 | 11 | internal sealed partial class Program 12 | { 13 | private static Task Main(string[] args) => BuildAvaloniaApp() 14 | .WithInterFont() 15 | .UseReactiveUI() 16 | .UseShell() 17 | .StartBrowserAppAsync("out"); 18 | 19 | public static AppBuilder BuildAvaloniaApp() 20 | => AppBuilder.Configure(); 21 | } 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "ShellBottomCustomNavigator.Browser": { 4 | "commandName": "Project", 5 | "launchBrowser": true, 6 | "environmentVariables": { 7 | "ASPNETCORE_ENVIRONMENT": "Development" 8 | }, 9 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 10 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/debug?browser={browserInspectUri}" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/ShellBottomCustomNavigator.Browser.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-browser 4 | browser-wasm 5 | Exe 6 | true 7 | AppBundle\main.js 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "wasmHostProperties": { 3 | "perHostConfig": [ 4 | { 5 | "name": "browser", 6 | "html-path": "index.html", 7 | "Host": "browser" 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia; 3 | using Avalonia.ReactiveUI; 4 | using AvaloniaInside.Shell; 5 | 6 | namespace ShellBottomCustomNavigator.Desktop; 7 | 8 | sealed class Program 9 | { 10 | // Initialization code. Don't use any Avalonia, third-party APIs or any 11 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized 12 | // yet and stuff might break. 13 | [STAThread] 14 | public static void Main(string[] args) => BuildAvaloniaApp() 15 | .StartWithClassicDesktopLifetime(args); 16 | 17 | // Avalonia configuration, don't remove; also used by visual designer. 18 | public static AppBuilder BuildAvaloniaApp() 19 | => AppBuilder.Configure() 20 | .UsePlatformDetect() 21 | .WithInterFont() 22 | .LogToTrace() 23 | .UseReactiveUI() 24 | .UseShell(); 25 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | using Avalonia; 4 | using Avalonia.Controls; 5 | using Avalonia.iOS; 6 | using Avalonia.Media; 7 | using Avalonia.ReactiveUI; 8 | using AvaloniaInside.Shell; 9 | 10 | namespace ShellBottomCustomNavigator.iOS; 11 | 12 | // The UIApplicationDelegate for the application. This class is responsible for launching the 13 | // User Interface of the application, as well as listening (and optionally responding) to 14 | // application events from iOS. 15 | [Register("AppDelegate")] 16 | #pragma warning disable CA1711 // Identifiers should not have incorrect suffix 17 | public partial class AppDelegate : AvaloniaAppDelegate 18 | #pragma warning restore CA1711 // Identifiers should not have incorrect suffix 19 | { 20 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 21 | { 22 | return base.CustomizeAppBuilder(builder) 23 | .WithInterFont() 24 | .UseShell() 25 | .UseReactiveUI(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace ShellBottomCustomNavigator.iOS; 4 | 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(AppDelegate)); 13 | } 14 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/ShellBottomCustomNavigator.iOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Exe 4 | net8.0-ios 5 | 13.0 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/Icons/truck-fast-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/Icons/truck-fast-solid.png -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/avalonia-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/avalonia-logo.ico -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/Donna_Moore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/Donna_Moore.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1000.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1001.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1002.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1003.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1007.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1010.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1011.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1020.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1021.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1022.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1023.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1030.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1031.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1031.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1032.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1032.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1035.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1035.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1036.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1036.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1037.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1037.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1040.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1040.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1041.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1041.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1042.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1042.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1050.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1050.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1051.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1051.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1052.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1052.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1055.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1055.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1056.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1056.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1060.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1060.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1061.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1061.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1062.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1062.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1063.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1063.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1064.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1064.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1065.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1065.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1066.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1066.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1067.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1067.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1068.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1068.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1069.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1069.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1070.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1070.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1071.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1071.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1072.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1072.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1073.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1073.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1080.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1080.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1081.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1081.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1082.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1082.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1083.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1083.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1085.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1085.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1090.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1090.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1091.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1091.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1092.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1092.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1095.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1095.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1096.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1096.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1097.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1097.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1100.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1101.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1102.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1103.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1104.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1105.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1106.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1107.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1110.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1111.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1112.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1113.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1114.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1114.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1115.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1115.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1116.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1116.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1117.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1118.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1118.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1119.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1119.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1120.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1137.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1137.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1138.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1138.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1210.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1210.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1251.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1251.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1252.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1252.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1253.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1253.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1254.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1254.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1255.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1255.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1256.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1256.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1257.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1257.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1258.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1258.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1500.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1501.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1501.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1502.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1502.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1600.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1601.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1601.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1602.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1602.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1603.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1603.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2000.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2001.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2002.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2020.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2025.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2026.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2027.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6101.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6102.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6110.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6111.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6121.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6122.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6123.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6123.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6130.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6131.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6132.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6132.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7000.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7010.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7020.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7030.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8000.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8001.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8002.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8003.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9991.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9991.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9992.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9992.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9993.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9993.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9994.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9994.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9995.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9995.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9996.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9996.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9997.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9997.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9998.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9998.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9999.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9999.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/John_Miller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/John_Miller.png -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/PF-1000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/PF-1000.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273303_low_jpg_srgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273303_low_jpg_srgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273537_low_jpg_srgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273537_low_jpg_srgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/johnDoe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/johnDoe.png -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants_small.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/elephant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/elephant.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/flatFish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/flatFish.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/horses.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/horses.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/screw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/screw.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/omid-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/omid-img.jpg -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Converters/BitmapAssetValueConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using Avalonia.Data.Converters; 4 | using Avalonia.Media.Imaging; 5 | using ShellBottomCustomNavigator.Helpers; 6 | 7 | namespace ShellBottomCustomNavigator.Converters; 8 | 9 | public class BitmapAssetValueConverter : IValueConverter 10 | { 11 | public static BitmapAssetValueConverter Instance = new BitmapAssetValueConverter(); 12 | 13 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 14 | { 15 | if (value == null) 16 | return null; 17 | 18 | if (value is string rawUri && targetType.IsAssignableFrom(typeof(Bitmap))) 19 | { 20 | return rawUri.GetBitmapFromAssets(); 21 | } 22 | 23 | throw new NotSupportedException(); 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 27 | { 28 | throw new NotSupportedException(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helper.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.VisualTree; 3 | 4 | namespace ShellBottomCustomNavigator; 5 | public static class Helper 6 | { 7 | public static void SetCarouselToTabControl(Carousel carousel, bool v) 8 | { 9 | var tabControl = carousel.FindAncestorOfType(); 10 | if (tabControl == null) 11 | { 12 | carousel.AttachedToVisualTree += delegate { SetCarouselToTabControl(carousel, true); }; 13 | return; 14 | } 15 | 16 | carousel.ItemsSource = tabControl.Items; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helpers/ImageHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia; 3 | using Avalonia.Media.Imaging; 4 | using Avalonia.Platform; 5 | using Splat; 6 | 7 | namespace ShellBottomCustomNavigator.Helpers; 8 | 9 | public static class ImageHelper 10 | { 11 | public static Bitmap? GetBitmapFromAssets(this string rawUri) 12 | { 13 | Uri uri; 14 | 15 | // Allow for assembly overrides 16 | if (rawUri.StartsWith("avares://")) 17 | { 18 | uri = new Uri(rawUri); 19 | } 20 | else 21 | { 22 | var assemblyName = typeof(ImageHelper).Assembly.GetName().Name; 23 | uri = new Uri($"avares://{assemblyName}/{rawUri.TrimStart('/')}"); 24 | } 25 | 26 | 27 | //var assets = Locator.Current.GetService(); 28 | using var asset = AssetLoader.Open(uri); 29 | 30 | return new Bitmap(asset); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/DummyPlace.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Reflection; 4 | using Newtonsoft.Json; 5 | 6 | namespace ShellBottomCustomNavigator.Models; 7 | 8 | public static class DummyPlace 9 | { 10 | public static ProductDto[] Products { get; } 11 | 12 | public static string GetProductsJson() 13 | { 14 | var assembly = Assembly.GetExecutingAssembly(); 15 | using var stream = assembly.GetManifestResourceStream("ShellBottomCustomNavigator.Resources.Products.json"); 16 | using var reader = new StreamReader(stream); 17 | return reader.ReadToEnd(); 18 | } 19 | 20 | static DummyPlace() 21 | { 22 | Products = JsonConvert.DeserializeObject(GetProductsJson()) ?? throw new Exception("Where is my resource?!"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Roots.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using ShellBottomCustomNavigator.ViewModels; 5 | 6 | namespace ShellBottomCustomNavigator; 7 | 8 | public class ViewLocator : IDataTemplate 9 | { 10 | public Control? Build(object? data) 11 | { 12 | if (data is null) 13 | return null; 14 | 15 | var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); 16 | var type = Type.GetType(name); 17 | 18 | if (type != null) 19 | { 20 | return (Control)Activator.CreateInstance(type)!; 21 | } 22 | 23 | return new TextBlock { Text = "Not Found: " + name }; 24 | } 25 | 26 | public bool Match(object? data) 27 | { 28 | return data is ViewModelBase; 29 | } 30 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/HomePageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | using System.Windows.Input; 4 | using AvaloniaInside.Shell; 5 | using ReactiveUI; 6 | 7 | namespace ShellBottomCustomNavigator.ViewModels; 8 | 9 | public class HomePageViewModel : ViewModelBase 10 | { 11 | private readonly INavigator _navigationService; 12 | 13 | public ICommand NavigateToSecondPage { get; set; } 14 | public ICommand ShowDialogCommand { get; set; } 15 | 16 | public HomePageViewModel(INavigator navigationService) 17 | { 18 | _navigationService = navigationService; 19 | NavigateToSecondPage = ReactiveCommand.CreateFromTask(Navigate); 20 | ShowDialogCommand = ReactiveCommand.CreateFromTask(ShowDialog); 21 | } 22 | 23 | private Task ShowDialog(CancellationToken cancellationToken) 24 | { 25 | return _navigationService.NavigateAsync("/main/home/confirmation", cancellationToken); 26 | } 27 | 28 | private Task Navigate() 29 | { 30 | return _navigationService.NavigateAsync("/second"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/MainViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Animation; 2 | using AvaloniaInside.Shell.Platform; 3 | using ReactiveUI; 4 | 5 | namespace ShellBottomCustomNavigator.ViewModels; 6 | 7 | public class MainViewModel : ViewModelBase 8 | { 9 | public string Greeting => "Welcome to Avalonia!"; 10 | 11 | private IPageTransition _currentTransition = PlatformSetup.TransitionForPage; 12 | public IPageTransition CurrentTransition 13 | { 14 | get => _currentTransition; 15 | set 16 | { 17 | this.RaiseAndSetIfChanged(ref _currentTransition, value); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductDetailViewModel.cs: -------------------------------------------------------------------------------- 1 | using ShellBottomCustomNavigator.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ShellBottomCustomNavigator.ViewModels.ShopViewModels; 9 | public class ProductDetailViewModel : ViewModelBase 10 | { 11 | public ProductDto Product { get; set; } 12 | 13 | public ProductDetailViewModel(ProductDto product) 14 | { 15 | Product = product; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using ReactiveUI; 2 | 3 | namespace ShellBottomCustomNavigator.ViewModels; 4 | 5 | public class ViewModelBase : ReactiveObject 6 | { 7 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/WelcomeViewModel.cs: -------------------------------------------------------------------------------- 1 | using AvaloniaInside.Shell; 2 | using ReactiveUI; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading; 8 | using System.Threading.Tasks; 9 | using System.Windows.Input; 10 | 11 | namespace ShellBottomCustomNavigator.ViewModels; 12 | 13 | public class WelcomeViewModel 14 | { 15 | private readonly INavigator _navigationService; 16 | public ICommand OpenCommand { get; set; } 17 | 18 | public WelcomeViewModel(INavigator navigationService) 19 | { 20 | _navigationService = navigationService; 21 | OpenCommand = ReactiveCommand.CreateFromTask(OpenAsync); 22 | } 23 | 24 | private Task OpenAsync(CancellationToken cancellationToken) 25 | { 26 | return _navigationService.NavigateAsync("/main", cancellationToken); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellBottomCustomNavigator.Views; 6 | 7 | public partial class CatView : Page 8 | { 9 | public CatView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | 19 | public string Icon => "fa-solid fa-cat"; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellBottomCustomNavigator.Views; 6 | 7 | public partial class DogView : Page 8 | { 9 | public DogView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | 19 | public string Icon => "fa-solid fa-dog"; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace ShellBottomCustomNavigator.Views; 8 | 9 | public partial class HomePage : Page 10 | { 11 | public HomePage() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | private void InitializeComponent() 17 | { 18 | AvaloniaXamlLoader.Load(this); 19 | } 20 | 21 | public override Task InitialiseAsync(CancellationToken cancellationToken) 22 | { 23 | DataContext = new ViewModels.HomePageViewModel(Navigator); 24 | return Task.CompletedTask; 25 | } 26 | 27 | public string Icon => "fa-solid fa-house"; 28 | } 29 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | 4 | namespace ShellBottomCustomNavigator.Views; 5 | 6 | public partial class MainView : UserControl 7 | { 8 | public static MainView Current { get; private set; } 9 | public MainView() 10 | { 11 | Current = this; 12 | InitializeComponent(); 13 | } 14 | 15 | protected override void OnLoaded(RoutedEventArgs e) 16 | { 17 | Current = this; 18 | base.OnLoaded(e); 19 | } 20 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace ShellBottomCustomNavigator.Views; 4 | 5 | public partial class MainWindow : Window 6 | { 7 | public MainWindow() 8 | { 9 | InitializeComponent(); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using Avalonia.Styling; 5 | 6 | namespace ShellBottomCustomNavigator.Views; 7 | 8 | public partial class PetsTabControlView : TabControl 9 | { 10 | protected override Type StyleKeyOverride => typeof(TabControl); 11 | 12 | public PetsTabControlView() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | AvaloniaXamlLoader.Load(this); 20 | } 21 | 22 | public string Icon => "fa-solid fa-paw"; 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml: -------------------------------------------------------------------------------- 1 | 8 | Welcome to Avalonia! 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellBottomCustomNavigator.Views; 6 | 7 | public partial class ProfileView : Page 8 | { 9 | public ProfileView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | 19 | public string Icon => "fa-solid fa-user"; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml: -------------------------------------------------------------------------------- 1 | 8 | Welcome to Avalonia! 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellBottomCustomNavigator.Views; 6 | 7 | public partial class SecondView : Page 8 | { 9 | public SecondView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | using ShellBottomCustomNavigator.ViewModels; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | 8 | namespace ShellBottomCustomNavigator.Views; 9 | 10 | public partial class SettingView : Page 11 | { 12 | public SettingView() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | public override Task InitialiseAsync(CancellationToken cancellationToken) 18 | { 19 | DataContext = new SettingViewModel() 20 | { 21 | MainViewModel = (MainViewModel)MainView.Current.DataContext 22 | }; 23 | 24 | return base.InitialiseAsync(cancellationToken); 25 | } 26 | 27 | private void InitializeComponent() 28 | { 29 | AvaloniaXamlLoader.Load(this); 30 | } 31 | 32 | public string Icon => "fa-solid fa-user"; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using AvaloniaInside.Shell; 5 | 6 | namespace ShellBottomCustomNavigator.Views.ShopViews; 7 | 8 | public partial class ConfirmationCloseView : Page 9 | { 10 | public ConfirmationCloseView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void NoClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) 16 | { 17 | Navigator.BackAsync(false); 18 | } 19 | 20 | private void YesClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) 21 | { 22 | Navigator.BackAsync(true); 23 | } 24 | } -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | using ShellBottomCustomNavigator.ViewModels.ShopViewModels; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | 8 | namespace ShellBottomCustomNavigator.Views.ShopViews; 9 | 10 | public partial class ProductCatalogView : Page 11 | { 12 | public ProductCatalogView() 13 | { 14 | InitializeComponent(); 15 | } 16 | 17 | public override Task InitialiseAsync(CancellationToken cancellationToken) 18 | { 19 | DataContext = new ProductCatalogViewModel(Navigator); 20 | 21 | return base.InitialiseAsync(cancellationToken); 22 | } 23 | 24 | private void InitializeComponent() 25 | { 26 | AvaloniaXamlLoader.Load(this); 27 | } 28 | 29 | public string Icon => "fa-solid fa-tag"; 30 | } 31 | 32 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/StarsControl.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace ShellBottomCustomNavigator.Views.ShopViews; 4 | 5 | public class StarsControl : Control 6 | { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using Avalonia.Markup.Xaml; 4 | using AvaloniaInside.Shell; 5 | 6 | namespace ShellBottomCustomNavigator.Views; 7 | 8 | public partial class SimpleDialog : Page 9 | { 10 | public SimpleDialog() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | } 19 | 20 | private void OkButton_OnClick(object? sender, RoutedEventArgs e) 21 | { 22 | Navigator?.BackAsync(); 23 | } 24 | 25 | private void CancelButton_OnClick(object? sender, RoutedEventArgs e) 26 | { 27 | Navigator?.BackAsync(); 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | using AvaloniaInside.Shell; 4 | using ShellBottomCustomNavigator.ViewModels; 5 | 6 | namespace ShellBottomCustomNavigator.Views 7 | { 8 | public partial class WelcomeView : Page 9 | { 10 | public WelcomeView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public override Task InitialiseAsync(CancellationToken cancellationToken) 16 | { 17 | DataContext = new WelcomeViewModel(Navigator); 18 | return base.InitialiseAsync(cancellationToken); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace ShellBottomCustomNavigator.Views.Widgets; 6 | 7 | public partial class CalendarWidgetView : UserControl 8 | { 9 | public string JustNow => DateTime.Now.ToString("dd MMMM yyyy"); 10 | 11 | public CalendarWidgetView() 12 | { 13 | InitializeComponent(); 14 | DataContext = this; 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | AvaloniaXamlLoader.Load(this); 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace ShellBottomCustomNavigator.Views.Widgets; 5 | 6 | public partial class UserProfileWidgetView : UserControl 7 | { 8 | public UserProfileWidgetView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace ShellBottomCustomNavigator.Views.Widgets; 5 | 6 | public partial class WeatherView : UserControl 7 | { 8 | public WeatherView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample.Android/Icon.png -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Avalonia; 4 | using Avalonia.Android; 5 | using Avalonia.ReactiveUI; 6 | using AvaloniaInside.Shell; 7 | 8 | namespace ShellExample.Android; 9 | 10 | [Activity(Label = "ShellExample.Android", Theme = "@style/MyTheme.Main", Icon = "@drawable/icon", 11 | 12 | LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)] 13 | public class MainActivity : AvaloniaMainActivity 14 | { 15 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 16 | { 17 | return base.CustomizeAppBuilder(builder) 18 | //.WithInterFont() 19 | .UseReactiveUI() 20 | .UseShell(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/Resources/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #FFFFFF 4 | 5 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 15 | 16 | 20 | 21 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Android/SplashActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content; 3 | using Application = Android.App.Application; 4 | 5 | namespace ShellExample.Android; 6 | 7 | [Activity(Theme = "@style/MyTheme.Splash", MainLauncher = true, NoHistory = true)] 8 | public class SplashActivity : Activity 9 | { 10 | protected override void OnResume() 11 | { 12 | base.OnResume(); 13 | 14 | StartActivity(new Intent(Application.Context, typeof(MainActivity))); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Desktop/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia; 3 | using Avalonia.ReactiveUI; 4 | using AvaloniaInside.Shell; 5 | 6 | namespace ShellExample.Desktop; 7 | 8 | class Program 9 | { 10 | // Initialization code. Don't use any Avalonia, third-party APIs or any 11 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized 12 | // yet and stuff might break. 13 | [STAThread] 14 | public static void Main(string[] args) => BuildAvaloniaApp() 15 | .StartWithClassicDesktopLifetime(args); 16 | 17 | // Avalonia configuration, don't remove; also used by visual designer. 18 | public static AppBuilder BuildAvaloniaApp() 19 | => AppBuilder.Configure() 20 | .UsePlatformDetect() 21 | .LogToTrace() 22 | .UseReactiveUI() 23 | .UseShell(); 24 | } 25 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Desktop/ShellExample.Desktop.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | WinExe 4 | net8.0 5 | enable 6 | true 7 | 8 | 9 | 10 | app.manifest 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Desktop/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/AppBundle/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample.Web/AppBundle/favicon.ico -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/AppBundle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ShellExample.Web 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |

21 | Powered by 22 | Avalonia UI 23 |

24 |
25 | Avalonia Logo 26 |
27 |
28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/AppBundle/main.js: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | import { dotnet } from './dotnet.js' 5 | 6 | const is_browser = typeof window != "undefined"; 7 | if (!is_browser) throw new Error(`Expected to be running in a browser`); 8 | 9 | const dotnetRuntime = await dotnet 10 | .withDiagnosticTracing(false) 11 | .withApplicationArgumentsFromQuery() 12 | .create(); 13 | 14 | const config = dotnetRuntime.getConfig(); 15 | 16 | await dotnetRuntime.runMainAndExit(config.mainAssemblyName, ["dotnet", "is", "great!"]); 17 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/Program.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Versioning; 2 | using Avalonia; 3 | using Avalonia.ReactiveUI; 4 | using ShellExample; 5 | using Avalonia.Browser; 6 | using AvaloniaInside.Shell; 7 | 8 | [assembly: SupportedOSPlatform("browser")] 9 | 10 | internal partial class Program 11 | { 12 | private static void Main(string[] args) => BuildAvaloniaApp() 13 | .UseReactiveUI() 14 | .UseShell() 15 | .StartBrowserAppAsync("out"); 16 | 17 | public static AppBuilder BuildAvaloniaApp() 18 | => AppBuilder.Configure(); 19 | } 20 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "ShellExample.Web": { 4 | "commandName": "Project", 5 | "launchBrowser": true, 6 | "environmentVariables": { 7 | "ASPNETCORE_ENVIRONMENT": "Development" 8 | }, 9 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 10 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/debug?browser={browserInspectUri}" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/ShellExample.Web.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | net8.0-browser 4 | browser-wasm 5 | Exe 6 | true 7 | AppBundle\main.js 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.Web/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "wasmHostProperties": { 3 | "perHostConfig": [ 4 | { 5 | "name": "browser", 6 | "html-path": "index.html", 7 | "Host": "browser" 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using Avalonia; 3 | using Avalonia.iOS; 4 | using Avalonia.ReactiveUI; 5 | using AvaloniaInside.Shell; 6 | 7 | namespace ShellExample.iOS; 8 | 9 | // The UIApplicationDelegate for the application. This class is responsible for launching the 10 | // User Interface of the application, as well as listening (and optionally responding) to 11 | // application events from iOS. 12 | [Register("AppDelegate")] 13 | public partial class AppDelegate : AvaloniaAppDelegate 14 | { 15 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 16 | { 17 | return builder 18 | .UseReactiveUI() 19 | .UseShell(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.iOS/Application.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace ShellExample.iOS; 4 | 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(AppDelegate)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample.iOS/ShellExample.iOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | Exe 4 | net8.0-ios 5 | 13.0 6 | automatic 7 | enable 8 | iossimulator-x64 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/App.axaml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/App.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls.ApplicationLifetimes; 3 | using Avalonia.Markup.Xaml; 4 | using Projektanker.Icons.Avalonia; 5 | using Projektanker.Icons.Avalonia.FontAwesome; 6 | using ShellExample.ViewModels; 7 | using ShellExample.Views; 8 | 9 | namespace ShellExample; 10 | 11 | public partial class App : Application 12 | { 13 | public override void Initialize() 14 | { 15 | IconProvider.Current 16 | .Register(); 17 | 18 | AvaloniaXamlLoader.Load(this); 19 | } 20 | 21 | public override void OnFrameworkInitializationCompleted() 22 | { 23 | if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) 24 | { 25 | desktop.MainWindow = new MainWindow 26 | { 27 | DataContext = new MainViewModel() 28 | }; 29 | } 30 | else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform) 31 | { 32 | singleViewPlatform.MainView = new MainView 33 | { 34 | DataContext = new MainViewModel() 35 | }; 36 | } 37 | 38 | base.OnFrameworkInitializationCompleted(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/Icons/truck-fast-solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/Icons/truck-fast-solid.png -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/avalonia-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/avalonia-logo.ico -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/Donna_Moore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/Donna_Moore.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1000.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1001.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1002.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1003.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1007.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1007.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1010.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1011.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1011.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1020.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1021.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1022.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1022.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1023.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1030.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1031.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1031.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1032.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1032.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1035.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1035.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1036.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1036.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1037.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1037.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1040.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1040.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1041.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1041.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1042.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1042.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1050.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1050.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1051.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1051.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1052.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1052.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1055.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1055.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1056.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1056.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1060.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1060.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1061.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1061.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1062.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1062.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1063.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1063.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1064.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1064.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1065.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1065.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1066.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1066.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1067.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1067.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1068.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1068.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1069.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1069.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1070.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1070.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1071.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1071.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1072.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1072.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1073.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1073.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1080.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1080.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1081.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1081.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1082.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1082.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1083.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1083.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1085.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1085.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1090.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1090.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1091.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1091.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1092.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1092.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1095.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1095.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1096.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1096.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1097.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1097.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1100.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1101.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1102.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1103.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1103.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1104.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1104.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1105.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1105.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1106.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1106.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1107.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1110.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1111.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1112.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1113.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1113.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1114.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1114.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1115.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1115.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1116.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1116.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1117.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1118.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1118.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1119.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1119.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1120.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1137.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1137.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1138.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1138.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1210.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1210.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1251.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1251.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1252.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1252.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1253.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1253.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1254.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1254.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1255.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1255.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1256.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1256.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1257.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1257.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1258.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1258.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1500.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1501.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1501.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1502.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1502.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1600.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1601.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1601.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1602.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1602.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-1603.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-1603.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2000.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2001.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2002.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2020.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2025.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2025.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2026.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2026.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-2027.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-2027.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6100-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6100-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6100.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6101.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6102.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6110.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6110.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6111.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6111.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6120-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6120-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6120.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6120.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6121.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6121.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6122.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6122.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6123.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6123.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6130.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6130.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6131.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6131.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-6132.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-6132.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7000.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7010.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7020.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7030.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7777-large.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7777-large.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-7777.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-7777.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-8000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-8000.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-8001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-8001.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-8002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-8002.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-8003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-8003.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9991.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9991.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9992.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9992.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9993.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9993.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9994.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9994.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9995.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9995.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9996.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9996.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9997.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9997.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9998.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9998.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/HT-9999.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/HT-9999.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/John_Miller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/John_Miller.png -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/PF-1000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/PF-1000.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/bigimgs/273303_low_jpg_srgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/bigimgs/273303_low_jpg_srgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/bigimgs/273537_low_jpg_srgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/bigimgs/273537_low_jpg_srgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/johnDoe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/johnDoe.png -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/nature/ALotOfElephants.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/nature/ALotOfElephants.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/nature/ALotOfElephants_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/nature/ALotOfElephants_small.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/nature/elephant.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/nature/elephant.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/nature/flatFish.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/nature/flatFish.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/nature/horses.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/nature/horses.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/images/screw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/images/screw.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Assets/omid-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvaloniaInside/Shell/519a437c2ce419fbbb1469a30c736e90efc49ef9/src/Example/ShellExample/ShellExample/Assets/omid-img.jpg -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Converters/BitmapAssetValueConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using Avalonia.Data.Converters; 4 | using Avalonia.Media.Imaging; 5 | using ShellExample.Helpers; 6 | 7 | namespace ShellExample.Converters; 8 | 9 | public class BitmapAssetValueConverter : IValueConverter 10 | { 11 | public static BitmapAssetValueConverter Instance = new BitmapAssetValueConverter(); 12 | 13 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 14 | { 15 | if (value == null) 16 | return null; 17 | 18 | if (value is string rawUri && targetType.IsAssignableFrom(typeof(Bitmap))) 19 | { 20 | return rawUri.GetBitmapFromAssets(); 21 | } 22 | 23 | throw new NotSupportedException(); 24 | } 25 | 26 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 27 | { 28 | throw new NotSupportedException(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Helper.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.VisualTree; 3 | 4 | namespace ShellExample; 5 | public static class Helper 6 | { 7 | public static void SetCarouselToTabControl(Carousel carousel, bool v) 8 | { 9 | var tabControl = carousel.FindAncestorOfType(); 10 | if (tabControl == null) 11 | { 12 | carousel.AttachedToVisualTree += delegate { SetCarouselToTabControl(carousel, true); }; 13 | return; 14 | } 15 | 16 | carousel.ItemsSource = tabControl.Items; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Helpers/ImageHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Media.Imaging; 3 | using Avalonia.Platform; 4 | 5 | namespace ShellExample.Helpers; 6 | 7 | public static class ImageHelper 8 | { 9 | public static Bitmap? GetBitmapFromAssets(this string rawUri) 10 | { 11 | Uri uri; 12 | 13 | // Allow for assembly overrides 14 | if (rawUri.StartsWith("avares://")) 15 | { 16 | uri = new Uri(rawUri); 17 | } 18 | else 19 | { 20 | var assemblyName = typeof(ImageHelper).Assembly.GetName().Name; 21 | uri = new Uri($"avares://{assemblyName}/{rawUri.TrimStart('/')}"); 22 | } 23 | 24 | 25 | //var assets = Locator.Current.GetService(); 26 | using var asset = AssetLoader.Open(uri); 27 | 28 | return new Bitmap(asset); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Models/DummyPlace.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Reflection; 4 | using Newtonsoft.Json; 5 | 6 | namespace ShellExample.Models; 7 | 8 | public static class DummyPlace 9 | { 10 | public static ProductDto[] Products { get; } 11 | 12 | public static string GetProductsJson() 13 | { 14 | var assembly = Assembly.GetExecutingAssembly(); 15 | using var stream = assembly.GetManifestResourceStream("ShellExample.Resources.Products.json"); 16 | using var reader = new StreamReader(stream); 17 | return reader.ReadToEnd(); 18 | } 19 | 20 | static DummyPlace() 21 | { 22 | Products = JsonConvert.DeserializeObject(GetProductsJson()) ?? throw new Exception("Where is my resource?!"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Roots.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using ShellExample.ViewModels; 5 | 6 | namespace ShellExample; 7 | 8 | public class ViewLocator : IDataTemplate 9 | { 10 | public Control? Build(object? data) 11 | { 12 | if (data is null) 13 | return null; 14 | 15 | var name = data.GetType().FullName!.Replace("ViewModel", "View"); 16 | var type = Type.GetType(name); 17 | 18 | if (type != null) 19 | { 20 | return (Control)Activator.CreateInstance(type)!; 21 | } 22 | 23 | return new TextBlock { Text = name }; 24 | } 25 | 26 | public bool Match(object? data) 27 | { 28 | return data is ViewModelBase; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewModels/HomePageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | using System.Windows.Input; 4 | using AvaloniaInside.Shell; 5 | using ReactiveUI; 6 | 7 | namespace ShellExample.ViewModels; 8 | 9 | public class HomePageViewModel : ViewModelBase 10 | { 11 | private readonly INavigator _navigationService; 12 | 13 | public ICommand NavigateToSecondPage { get; set; } 14 | public ICommand ShowDialogCommand { get; set; } 15 | 16 | public HomePageViewModel(INavigator navigationService) 17 | { 18 | _navigationService = navigationService; 19 | NavigateToSecondPage = ReactiveCommand.CreateFromTask(Navigate); 20 | ShowDialogCommand = ReactiveCommand.CreateFromTask(ShowDialog); 21 | } 22 | 23 | private Task ShowDialog(CancellationToken cancellationToken) 24 | { 25 | return _navigationService.NavigateAsync("/main/home/confirmation", cancellationToken); 26 | } 27 | 28 | private Task Navigate() 29 | { 30 | return _navigationService.NavigateAsync("/second"); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewModels/MainViewModel.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Animation; 2 | using AvaloniaInside.Shell.Platform; 3 | using ReactiveUI; 4 | 5 | namespace ShellExample.ViewModels; 6 | 7 | public class MainViewModel : ViewModelBase 8 | { 9 | public string Greeting => "Welcome to Avalonia!"; 10 | 11 | private IPageTransition _currentTransition = PlatformSetup.TransitionForPage; 12 | public IPageTransition CurrentTransition 13 | { 14 | get => _currentTransition; 15 | set 16 | { 17 | this.RaiseAndSetIfChanged(ref _currentTransition, value); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewModels/ShopViewModels/ProductDetailViewModel.cs: -------------------------------------------------------------------------------- 1 | using ShellExample.Models; 2 | 3 | namespace ShellExample.ViewModels.ShopViewModels; 4 | public class ProductDetailViewModel : ViewModelBase 5 | { 6 | public ProductDto Product { get; set; } 7 | 8 | public string Title => Product.Name; 9 | 10 | public ProductDetailViewModel(ProductDto product) 11 | { 12 | Product = product; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using ReactiveUI; 2 | 3 | namespace ShellExample.ViewModels; 4 | 5 | public class ViewModelBase : ReactiveObject 6 | { 7 | } 8 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/ViewModels/WelcomeViewModel.cs: -------------------------------------------------------------------------------- 1 | using AvaloniaInside.Shell; 2 | using ReactiveUI; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | using System.Windows.Input; 6 | 7 | namespace ShellExample.ViewModels; 8 | 9 | internal class WelcomeViewModel 10 | { 11 | private readonly INavigator _navigationService; 12 | public ICommand OpenCommand { get; set; } 13 | 14 | public WelcomeViewModel(INavigator navigationService) 15 | { 16 | _navigationService = navigationService; 17 | OpenCommand = ReactiveCommand.CreateFromTask(OpenAsync); 18 | } 19 | 20 | private Task OpenAsync(CancellationToken cancellationToken) 21 | { 22 | return _navigationService.NavigateAsync("/main", cancellationToken); 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/CatView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/CatView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | 4 | namespace ShellExample.Views; 5 | 6 | public partial class CatView : Page 7 | { 8 | public CatView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | 18 | public string Icon => "fa-solid fa-cat"; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/DogView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/DogView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | 4 | namespace ShellExample.Views; 5 | 6 | public partial class DogView : Page 7 | { 8 | public DogView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | 18 | public string Icon => "fa-solid fa-dog"; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/HomePage.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | using System.Threading; 4 | using System.Threading.Tasks; 5 | 6 | namespace ShellExample.Views; 7 | 8 | public partial class HomePage : Page 9 | { 10 | public HomePage() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | } 19 | 20 | public override Task InitialiseAsync(CancellationToken cancellationToken) 21 | { 22 | DataContext = new ViewModels.HomePageViewModel(Navigator); 23 | return Task.CompletedTask; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/MainTabControl.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace ShellExample.Views; 6 | 7 | public partial class MainTabControl : TabControl 8 | { 9 | protected override Type StyleKeyOverride => typeof(TabControl); 10 | 11 | public MainTabControl() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | private void InitializeComponent() 17 | { 18 | AvaloniaXamlLoader.Load(this); 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/MainView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Interactivity; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellExample.Views; 6 | 7 | public partial class MainView : ShellView 8 | { 9 | public static MainView Current { get; private set; } 10 | 11 | public MainView() 12 | { 13 | Current = this; 14 | InitializeComponent(); 15 | } 16 | 17 | protected override void OnLoaded(RoutedEventArgs e) 18 | { 19 | Current = this; 20 | base.OnLoaded(e); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/MainWindow.axaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/MainWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | 4 | namespace ShellExample.Views; 5 | 6 | public partial class MainWindow : Window 7 | { 8 | public MainWindow() 9 | { 10 | this.AttachDevTools(); 11 | InitializeComponent(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/PetsTabControlView.axaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/PetsTabControlView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | using AvaloniaInside.Shell; 5 | 6 | namespace ShellExample.Views; 7 | 8 | public partial class PetsTabControlView : TabPage 9 | { 10 | public PetsTabControlView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private void InitializeComponent() 16 | { 17 | AvaloniaXamlLoader.Load(this); 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ProfileView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | Welcome to Avalonia! 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ProfileView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | 4 | namespace ShellExample.Views; 5 | 6 | public partial class ProfileView : Page 7 | { 8 | public ProfileView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/SecondView.axaml: -------------------------------------------------------------------------------- 1 | 8 | Welcome to Avalonia! 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/SecondView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | 4 | namespace ShellExample.Views; 5 | 6 | public partial class SecondView : Page 7 | { 8 | public SecondView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/SettingView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | using ShellExample.ViewModels; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace ShellExample.Views; 8 | 9 | public partial class SettingView : Page 10 | { 11 | public SettingView() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | public override Task InitialiseAsync(CancellationToken cancellationToken) 17 | { 18 | DataContext = new SettingViewModel() 19 | { 20 | MainViewModel = (MainViewModel)MainView.Current.DataContext 21 | }; 22 | 23 | return base.InitialiseAsync(cancellationToken); 24 | } 25 | 26 | private void InitializeComponent() 27 | { 28 | AvaloniaXamlLoader.Load(this); 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ShopViews/ConfirmationCloseView.axaml.cs: -------------------------------------------------------------------------------- 1 | using AvaloniaInside.Shell; 2 | 3 | namespace ShellExample.Views.ShopViews; 4 | 5 | public partial class ConfirmationCloseView : Page 6 | { 7 | public ConfirmationCloseView() 8 | { 9 | InitializeComponent(); 10 | } 11 | 12 | private void NoClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) 13 | { 14 | Navigator.BackAsync(false); 15 | } 16 | 17 | private void YesClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e) 18 | { 19 | Navigator.BackAsync(true); 20 | } 21 | } -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ShopViews/ProductCatalogFilterView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using System.Threading.Tasks; 3 | using Avalonia.Markup.Xaml; 4 | using AvaloniaInside.Shell; 5 | using ShellExample.ViewModels.ShopViewModels; 6 | 7 | namespace ShellExample.Views.ShopViews; 8 | 9 | public partial class ProductCatalogFilterView : Page 10 | { 11 | public ProductCatalogFilterViewModel ViewModel { get; internal set; } 12 | 13 | public ProductCatalogFilterView() 14 | { 15 | InitializeComponent(); 16 | } 17 | 18 | public override Task InitialiseAsync(CancellationToken cancellationToken) 19 | { 20 | DataContext = ViewModel = new ProductCatalogFilterViewModel(Navigator); 21 | return base.InitialiseAsync(cancellationToken); 22 | } 23 | 24 | private void InitializeComponent() 25 | { 26 | AvaloniaXamlLoader.Load(this); 27 | } 28 | 29 | public override Task ArgumentAsync(object args, CancellationToken cancellationToken) 30 | { 31 | if (args is string selectedCategory) 32 | ViewModel.SetSelectedCategory(selectedCategory == string.Empty ? null : selectedCategory); 33 | return Task.CompletedTask; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ShopViews/ProductCatalogView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Markup.Xaml; 2 | using AvaloniaInside.Shell; 3 | using ShellExample.ViewModels.ShopViewModels; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace ShellExample.Views.ShopViews; 8 | 9 | public partial class ProductCatalogView : Page 10 | { 11 | public ProductCatalogView() 12 | { 13 | InitializeComponent(); 14 | } 15 | 16 | public override Task InitialiseAsync(CancellationToken cancellationToken) 17 | { 18 | DataContext = new ProductCatalogViewModel(Navigator); 19 | 20 | return base.InitialiseAsync(cancellationToken); 21 | } 22 | 23 | private void InitializeComponent() 24 | { 25 | AvaloniaXamlLoader.Load(this); 26 | } 27 | 28 | public string Icon => "fa-solid fa-tag"; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ShopViews/ProductDetailView.axaml.cs: -------------------------------------------------------------------------------- 1 | using AvaloniaInside.Shell; 2 | using ShellExample.Models; 3 | using ShellExample.ViewModels.ShopViewModels; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace ShellExample.Views.ShopViews; 8 | public partial class ProductDetailView : Page 9 | { 10 | public ProductDetailView() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | public override Task ArgumentAsync(object args, CancellationToken cancellationToken) 16 | { 17 | if (args is not ProductDto dto) return Task.CompletedTask; 18 | 19 | DataContext = new ProductDetailViewModel(dto); 20 | return Task.CompletedTask; 21 | } 22 | 23 | public override async Task OnNavigatingAsync(NaviagatingEventArgs args, CancellationToken cancellationToken) 24 | { 25 | if (args.Navigate == NavigateType.Pop) 26 | { 27 | var result = await Navigator.NavigateAndWaitAsync("/main/product/confirmation"); 28 | if (result.Argument is bool v) 29 | args.Cancel = !v; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/ShopViews/StarsControl.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace ShellExample.Views.ShopViews; 4 | 5 | public class StarsControl : Control 6 | { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/SimpleDialog.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Interactivity; 2 | using Avalonia.Markup.Xaml; 3 | using AvaloniaInside.Shell; 4 | 5 | namespace ShellExample.Views; 6 | 7 | public partial class SimpleDialog : Page 8 | { 9 | public SimpleDialog() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | private void InitializeComponent() 15 | { 16 | AvaloniaXamlLoader.Load(this); 17 | } 18 | 19 | private void OkButton_OnClick(object? sender, RoutedEventArgs e) 20 | { 21 | Navigator?.BackAsync(); 22 | } 23 | 24 | private void CancelButton_OnClick(object? sender, RoutedEventArgs e) 25 | { 26 | Navigator?.BackAsync(); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/WelcomeView.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/WelcomeView.axaml.cs: -------------------------------------------------------------------------------- 1 | using AvaloniaInside.Shell; 2 | using System.Threading; 3 | using System.Threading.Tasks; 4 | 5 | namespace ShellExample.Views 6 | { 7 | public partial class WelcomeView : Page 8 | { 9 | public WelcomeView() 10 | { 11 | InitializeComponent(); 12 | } 13 | 14 | public override Task InitialiseAsync(CancellationToken cancellationToken) 15 | { 16 | DataContext = new ViewModels.WelcomeViewModel(Navigator); 17 | return base.InitialiseAsync(cancellationToken); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/Widgets/CalendarWidgetView.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace ShellExample.Views.Widgets; 6 | 7 | public partial class CalendarWidgetView : UserControl 8 | { 9 | public string JustNow => DateTime.Now.ToString("dd MMMM yyyy"); 10 | 11 | public CalendarWidgetView() 12 | { 13 | InitializeComponent(); 14 | DataContext = this; 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | AvaloniaXamlLoader.Load(this); 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/Widgets/UserProfileWidgetView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace ShellExample.Views.Widgets; 5 | 6 | public partial class UserProfileWidgetView : UserControl 7 | { 8 | public UserProfileWidgetView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/Example/ShellExample/ShellExample/Views/Widgets/WeatherView.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | using Avalonia.Markup.Xaml; 3 | 4 | namespace ShellExample.Views.Widgets; 5 | 6 | public partial class WeatherView : UserControl 7 | { 8 | public WeatherView() 9 | { 10 | InitializeComponent(); 11 | } 12 | 13 | private void InitializeComponent() 14 | { 15 | AvaloniaXamlLoader.Load(this); 16 | } 17 | } 18 | 19 | --------------------------------------------------------------------------------