├── .gitignore
├── README.md
├── README_kor.md
└── src
├── .idea
└── .idea.AvaloniaNavigationBar
│ └── .idea
│ ├── .gitignore
│ ├── .name
│ ├── avalonia.xml
│ ├── indexLayout.xml
│ ├── libraries
│ ├── androidx_activity_activity.xml
│ ├── androidx_annotation_annotation.xml
│ ├── androidx_annotation_annotation_experimental.xml
│ ├── androidx_annotation_annotation_jvm.xml
│ ├── androidx_appcompat_appcompat.xml
│ ├── androidx_appcompat_appcompat_resources.xml
│ ├── androidx_arch_core_core_common.xml
│ ├── androidx_arch_core_core_runtime.xml
│ ├── androidx_collection_collection.xml
│ ├── androidx_collection_collection_jvm.xml
│ ├── androidx_concurrent_concurrent_futures.xml
│ ├── androidx_core_core.xml
│ ├── androidx_core_core_ktx.xml
│ ├── androidx_core_core_splashscreen.xml
│ ├── androidx_cursoradapter_cursoradapter.xml
│ ├── androidx_customview_customview.xml
│ ├── androidx_drawerlayout_drawerlayout.xml
│ ├── androidx_emoji2_emoji2.xml
│ ├── androidx_emoji2_emoji2_views_helper.xml
│ ├── androidx_fragment_fragment.xml
│ ├── androidx_interpolator_interpolator.xml
│ ├── androidx_lifecycle_lifecycle_common.xml
│ ├── androidx_lifecycle_lifecycle_livedata_core.xml
│ ├── androidx_lifecycle_lifecycle_process.xml
│ ├── androidx_lifecycle_lifecycle_runtime.xml
│ ├── androidx_lifecycle_lifecycle_viewmodel.xml
│ ├── androidx_lifecycle_lifecycle_viewmodel_savedstate.xml
│ ├── androidx_loader_loader.xml
│ ├── androidx_profileinstaller_profileinstaller.xml
│ ├── androidx_resourceinspection_resourceinspection_annotation.xml
│ ├── androidx_savedstate_savedstate.xml
│ ├── androidx_startup_startup_runtime.xml
│ ├── androidx_tracing_tracing.xml
│ ├── androidx_vectordrawable_vectordrawable.xml
│ ├── androidx_vectordrawable_vectordrawable_animated.xml
│ ├── androidx_versionedparcelable_versionedparcelable.xml
│ ├── androidx_viewpager_viewpager.xml
│ ├── guava_listenablefuture.xml
│ ├── org_jetbrains_annotations_24_0_1.xml
│ ├── org_jetbrains_kotlin_kotlin_stdlib_1_9_10.xml
│ ├── org_jetbrains_kotlin_kotlin_stdlib_common_1_9_10.xml
│ ├── org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_10.xml
│ ├── org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_10.xml
│ ├── org_jetbrains_kotlinx_kotlinx_coroutines_android_1_7_3.xml
│ └── org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_7_3.xml
│ └── vcs.xml
├── AvaloniaNavigationBar.sln
├── AvaloniaNavigationBar
├── AvaloniaNavigationBar.csproj
├── Interface
│ └── INavigationAdapter.cs
└── Style
│ ├── BottomNavigatorBarStyle2.axaml
│ ├── BottomNavigatorBarStyle2.axaml.cs
│ ├── BottomNavigatorBarStyle2Item.axaml
│ ├── BottomNavigatorBarStyle2Item.axaml.cs
│ ├── MagicBar.axaml
│ ├── MagicBar.axaml.cs
│ └── Navibar.cs
└── DemoApp
├── .gitignore
├── DemoApp.Android
├── DemoApp.Android.csproj
├── 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
├── DemoApp.Browser
├── DemoApp.Browser.csproj
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ └── launchSettings.json
├── runtimeconfig.template.json
└── wwwroot
│ ├── app.css
│ ├── favicon.ico
│ ├── index.html
│ └── main.js
├── DemoApp.Desktop
├── DemoApp.Desktop.csproj
├── Program.cs
└── app.manifest
├── DemoApp.iOS
├── AppDelegate.cs
├── DemoApp.iOS.csproj
├── Entitlements.plist
├── Info.plist
├── Main.cs
└── Resources
│ └── LaunchScreen.xib
├── DemoApp.sln
├── DemoApp
├── App.axaml
├── App.axaml.cs
├── Assets
│ └── avalonia-logo.ico
├── DemoApp.csproj
├── ViewModels
│ ├── MainViewModel.cs
│ └── ViewModelBase.cs
└── Views
│ ├── BottomNavigatorBoarStyle2Page.axaml
│ ├── BottomNavigatorBoarStyle2Page.axaml.cs
│ ├── MagicBarSamplePage.axaml
│ ├── MagicBarSamplePage.axaml.cs
│ ├── MainView.axaml
│ ├── MainView.axaml.cs
│ ├── MainWindow.axaml
│ └── MainWindow.axaml.cs
└── Directory.Build.props
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.toptal.com/developers/gitignore/api/rider,visualstudio
2 | # Edit at https://www.toptal.com/developers/gitignore?templates=rider,visualstudio
3 |
4 | ### Rider ###
5 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
6 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
7 |
8 | # User-specific stuff
9 | .idea/**/workspace.xml
10 | .idea/**/tasks.xml
11 | .idea/**/usage.statistics.xml
12 | .idea/**/dictionaries
13 | .idea/**/shelf
14 |
15 | # AWS User-specific
16 | .idea/**/aws.xml
17 |
18 | # Generated files
19 | .idea/**/contentModel.xml
20 |
21 | # Sensitive or high-churn files
22 | .idea/**/dataSources/
23 | .idea/**/dataSources.ids
24 | .idea/**/dataSources.local.xml
25 | .idea/**/sqlDataSources.xml
26 | .idea/**/dynamic.xml
27 | .idea/**/uiDesigner.xml
28 | .idea/**/dbnavigator.xml
29 |
30 | # Gradle
31 | .idea/**/gradle.xml
32 | .idea/**/libraries
33 |
34 | # Gradle and Maven with auto-import
35 | # When using Gradle or Maven with auto-import, you should exclude module files,
36 | # since they will be recreated, and may cause churn. Uncomment if using
37 | # auto-import.
38 | # .idea/artifacts
39 | # .idea/compiler.xml
40 | # .idea/jarRepositories.xml
41 | # .idea/modules.xml
42 | # .idea/*.iml
43 | # .idea/modules
44 | # *.iml
45 | # *.ipr
46 |
47 | # CMake
48 | cmake-build-*/
49 |
50 | # Mongo Explorer plugin
51 | .idea/**/mongoSettings.xml
52 |
53 | # File-based project format
54 | *.iws
55 |
56 | # IntelliJ
57 | out/
58 |
59 | # mpeltonen/sbt-idea plugin
60 | .idea_modules/
61 |
62 | # JIRA plugin
63 | atlassian-ide-plugin.xml
64 |
65 | # Cursive Clojure plugin
66 | .idea/replstate.xml
67 |
68 | # SonarLint plugin
69 | .idea/sonarlint/
70 |
71 | # Crashlytics plugin (for Android Studio and IntelliJ)
72 | com_crashlytics_export_strings.xml
73 | crashlytics.properties
74 | crashlytics-build.properties
75 | fabric.properties
76 |
77 | # Editor-based Rest Client
78 | .idea/httpRequests
79 |
80 | # Android studio 3.1+ serialized cache file
81 | .idea/caches/build_file_checksums.ser
82 |
83 | ### VisualStudio ###
84 | ## Ignore Visual Studio temporary files, build results, and
85 | ## files generated by popular Visual Studio add-ons.
86 | ##
87 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
88 |
89 | # User-specific files
90 | *.rsuser
91 | *.suo
92 | *.user
93 | *.userosscache
94 | *.sln.docstates
95 |
96 | # User-specific files (MonoDevelop/Xamarin Studio)
97 | *.userprefs
98 |
99 | # Mono auto generated files
100 | mono_crash.*
101 |
102 | # Build results
103 | [Dd]ebug/
104 | [Dd]ebugPublic/
105 | [Rr]elease/
106 | [Rr]eleases/
107 | x64/
108 | x86/
109 | [Ww][Ii][Nn]32/
110 | [Aa][Rr][Mm]/
111 | [Aa][Rr][Mm]64/
112 | bld/
113 | [Bb]in/
114 | [Oo]bj/
115 | [Ll]og/
116 | [Ll]ogs/
117 |
118 | # Visual Studio 2015/2017 cache/options directory
119 | .vs/
120 | # Uncomment if you have tasks that create the project's static files in wwwroot
121 | #wwwroot/
122 |
123 | # Visual Studio 2017 auto generated files
124 | Generated\ Files/
125 |
126 | # MSTest test Results
127 | [Tt]est[Rr]esult*/
128 | [Bb]uild[Ll]og.*
129 |
130 | # NUnit
131 | *.VisualState.xml
132 | TestResult.xml
133 | nunit-*.xml
134 |
135 | # Build Results of an ATL Project
136 | [Dd]ebugPS/
137 | [Rr]eleasePS/
138 | dlldata.c
139 |
140 | # Benchmark Results
141 | BenchmarkDotNet.Artifacts/
142 |
143 | # .NET Core
144 | project.lock.json
145 | project.fragment.lock.json
146 | artifacts/
147 |
148 | # ASP.NET Scaffolding
149 | ScaffoldingReadMe.txt
150 |
151 | # StyleCop
152 | StyleCopReport.xml
153 |
154 | # Files built by Visual Studio
155 | *_i.c
156 | *_p.c
157 | *_h.h
158 | *.ilk
159 | *.meta
160 | *.obj
161 | *.iobj
162 | *.pch
163 | *.pdb
164 | *.ipdb
165 | *.pgc
166 | *.pgd
167 | *.rsp
168 | *.sbr
169 | *.tlb
170 | *.tli
171 | *.tlh
172 | *.tmp
173 | *.tmp_proj
174 | *_wpftmp.csproj
175 | *.log
176 | *.tlog
177 | *.vspscc
178 | *.vssscc
179 | .builds
180 | *.pidb
181 | *.svclog
182 | *.scc
183 |
184 | # Chutzpah Test files
185 | _Chutzpah*
186 |
187 | # Visual C++ cache files
188 | ipch/
189 | *.aps
190 | *.ncb
191 | *.opendb
192 | *.opensdf
193 | *.sdf
194 | *.cachefile
195 | *.VC.db
196 | *.VC.VC.opendb
197 |
198 | # Visual Studio profiler
199 | *.psess
200 | *.vsp
201 | *.vspx
202 | *.sap
203 |
204 | # Visual Studio Trace Files
205 | *.e2e
206 |
207 | # TFS 2012 Local Workspace
208 | $tf/
209 |
210 | # Guidance Automation Toolkit
211 | *.gpState
212 |
213 | # ReSharper is a .NET coding add-in
214 | _ReSharper*/
215 | *.[Rr]e[Ss]harper
216 | *.DotSettings.user
217 |
218 | # TeamCity is a build add-in
219 | _TeamCity*
220 |
221 | # DotCover is a Code Coverage Tool
222 | *.dotCover
223 |
224 | # AxoCover is a Code Coverage Tool
225 | .axoCover/*
226 | !.axoCover/settings.json
227 |
228 | # Coverlet is a free, cross platform Code Coverage Tool
229 | coverage*.json
230 | coverage*.xml
231 | coverage*.info
232 |
233 | # Visual Studio code coverage results
234 | *.coverage
235 | *.coveragexml
236 |
237 | # NCrunch
238 | _NCrunch_*
239 | .*crunch*.local.xml
240 | nCrunchTemp_*
241 |
242 | # MightyMoose
243 | *.mm.*
244 | AutoTest.Net/
245 |
246 | # Web workbench (sass)
247 | .sass-cache/
248 |
249 | # Installshield output folder
250 | [Ee]xpress/
251 |
252 | # DocProject is a documentation generator add-in
253 | DocProject/buildhelp/
254 | DocProject/Help/*.HxT
255 | DocProject/Help/*.HxC
256 | DocProject/Help/*.hhc
257 | DocProject/Help/*.hhk
258 | DocProject/Help/*.hhp
259 | DocProject/Help/Html2
260 | DocProject/Help/html
261 |
262 | # Click-Once directory
263 | publish/
264 |
265 | # Publish Web Output
266 | *.[Pp]ublish.xml
267 | *.azurePubxml
268 | # Note: Comment the next line if you want to checkin your web deploy settings,
269 | # but database connection strings (with potential passwords) will be unencrypted
270 | *.pubxml
271 | *.publishproj
272 |
273 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
274 | # checkin your Azure Web App publish settings, but sensitive information contained
275 | # in these scripts will be unencrypted
276 | PublishScripts/
277 |
278 | # NuGet Packages
279 | *.nupkg
280 | # NuGet Symbol Packages
281 | *.snupkg
282 | # The packages folder can be ignored because of Package Restore
283 | **/[Pp]ackages/*
284 | # except build/, which is used as an MSBuild target.
285 | !**/[Pp]ackages/build/
286 | # Uncomment if necessary however generally it will be regenerated when needed
287 | #!**/[Pp]ackages/repositories.config
288 | # NuGet v3's project.json files produces more ignorable files
289 | *.nuget.props
290 | *.nuget.targets
291 |
292 | # Microsoft Azure Build Output
293 | csx/
294 | *.build.csdef
295 |
296 | # Microsoft Azure Emulator
297 | ecf/
298 | rcf/
299 |
300 | # Windows Store app package directories and files
301 | AppPackages/
302 | BundleArtifacts/
303 | Package.StoreAssociation.xml
304 | _pkginfo.txt
305 | *.appx
306 | *.appxbundle
307 | *.appxupload
308 |
309 | # Visual Studio cache files
310 | # files ending in .cache can be ignored
311 | *.[Cc]ache
312 | # but keep track of directories ending in .cache
313 | !?*.[Cc]ache/
314 |
315 | # Others
316 | ClientBin/
317 | ~$*
318 | *~
319 | *.dbmdl
320 | *.dbproj.schemaview
321 | *.jfm
322 | *.pfx
323 | *.publishsettings
324 | orleans.codegen.cs
325 |
326 | # Including strong name files can present a security risk
327 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
328 | #*.snk
329 |
330 | # Since there are multiple workflows, uncomment next line to ignore bower_components
331 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
332 | #bower_components/
333 |
334 | # RIA/Silverlight projects
335 | Generated_Code/
336 |
337 | # Backup & report files from converting an old project file
338 | # to a newer Visual Studio version. Backup files are not needed,
339 | # because we have git ;-)
340 | _UpgradeReport_Files/
341 | Backup*/
342 | UpgradeLog*.XML
343 | UpgradeLog*.htm
344 | ServiceFabricBackup/
345 | *.rptproj.bak
346 |
347 | # SQL Server files
348 | *.mdf
349 | *.ldf
350 | *.ndf
351 |
352 | # Business Intelligence projects
353 | *.rdl.data
354 | *.bim.layout
355 | *.bim_*.settings
356 | *.rptproj.rsuser
357 | *- [Bb]ackup.rdl
358 | *- [Bb]ackup ([0-9]).rdl
359 | *- [Bb]ackup ([0-9][0-9]).rdl
360 |
361 | # Microsoft Fakes
362 | FakesAssemblies/
363 |
364 | # GhostDoc plugin setting file
365 | *.GhostDoc.xml
366 |
367 | # Node.js Tools for Visual Studio
368 | .ntvs_analysis.dat
369 | node_modules/
370 |
371 | # Visual Studio 6 build log
372 | *.plg
373 |
374 | # Visual Studio 6 workspace options file
375 | *.opt
376 |
377 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
378 | *.vbw
379 |
380 | # Visual Studio 6 auto-generated project file (contains which files were open etc.)
381 | *.vbp
382 |
383 | # Visual Studio 6 workspace and project file (working project files containing files to include in project)
384 | *.dsw
385 | *.dsp
386 |
387 | # Visual Studio 6 technical files
388 |
389 | # Visual Studio LightSwitch build output
390 | **/*.HTMLClient/GeneratedArtifacts
391 | **/*.DesktopClient/GeneratedArtifacts
392 | **/*.DesktopClient/ModelManifest.xml
393 | **/*.Server/GeneratedArtifacts
394 | **/*.Server/ModelManifest.xml
395 | _Pvt_Extensions
396 |
397 | # Paket dependency manager
398 | .paket/paket.exe
399 | paket-files/
400 |
401 | # FAKE - F# Make
402 | .fake/
403 |
404 | # CodeRush personal settings
405 | .cr/personal
406 |
407 | # Python Tools for Visual Studio (PTVS)
408 | __pycache__/
409 | *.pyc
410 |
411 | # Cake - Uncomment if you are using it
412 | # tools/**
413 | # !tools/packages.config
414 |
415 | # Tabs Studio
416 | *.tss
417 |
418 | # Telerik's JustMock configuration file
419 | *.jmconfig
420 |
421 | # BizTalk build output
422 | *.btp.cs
423 | *.btm.cs
424 | *.odx.cs
425 | *.xsd.cs
426 |
427 | # OpenCover UI analysis results
428 | OpenCover/
429 |
430 | # Azure Stream Analytics local run output
431 | ASALocalRun/
432 |
433 | # MSBuild Binary and Structured Log
434 | *.binlog
435 |
436 | # NVidia Nsight GPU debugger configuration file
437 | *.nvuser
438 |
439 | # MFractors (Xamarin productivity tool) working folder
440 | .mfractor/
441 |
442 | # Local History for Visual Studio
443 | .localhistory/
444 |
445 | # Visual Studio History (VSHistory) files
446 | .vshistory/
447 |
448 | # BeatPulse healthcheck temp database
449 | healthchecksdb
450 |
451 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
452 | MigrationBackup/
453 |
454 | # Ionide (cross platform F# VS Code tools) working folder
455 | .ionide/
456 |
457 | # Fody - auto-generated XML schema
458 | FodyWeavers.xsd
459 |
460 | # VS Code files for those working on multiple tools
461 | .vscode/*
462 | !.vscode/settings.json
463 | !.vscode/tasks.json
464 | !.vscode/launch.json
465 | !.vscode/extensions.json
466 | *.code-workspace
467 |
468 | # Local History for Visual Studio Code
469 | .history/
470 |
471 | # Windows Installer files from build outputs
472 | *.cab
473 | *.msi
474 | *.msix
475 | *.msm
476 | *.msp
477 |
478 | # JetBrains Rider
479 | *.sln.iml
480 |
481 | ### VisualStudio Patch ###
482 | # Additional files built by Visual Studio
483 |
484 | # End of https://www.toptal.com/developers/gitignore/api/rider,visualstudio
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AvaloniaUI AvaloniaNavigationBar Project
2 |
3 | ### Motivation
4 | This NavigationBar was inspired by my friends Vicky and James' WPF NavigationBar. In addition to this, we have long been contributing together to WPF technology research, open-source activities, and activities such as NuGet packages. I would like to express my gratitude to my friends.
5 |
6 | ### Introduction
7 | This project is an example implementation of a user-friendly AvaloniaNavigationBar using the AvaloniaUI framework. AvaloniaUI is a powerful and flexible tool for cross-platform desktop application development. In this example, we demonstrate how to create a bottom navigation bar using the ListBox control, enhancing the efficiency and accessibility of the user interface.
8 |
9 | ### Features
10 | - **Cross-Platform Compatibility**: Works seamlessly on Windows, Linux, and macOS.
11 | - **Customizability**: Offers a variety of styles and themes, allowing developers to tailor the design to their preferences.
12 | - **Enhanced User Experience**: An intuitive UI improves the usability of the application.
13 | ### How It's Made
14 | Implementation Using AvaloniaUI ListBox
15 | The AvaloniaNavigationBar is based on the ListBox control, enabling efficient display of items and responsiveness to user input. Each item is composed of an icon and text for easy identification and selection by the user.
16 |
17 | ### Styles and Themes
18 | Utilizing AvaloniaUI's flexible styling system, the AvaloniaNavigationBar can be customized to meet various visual requirements, maintaining consistency with the overall design of the application.
19 |
20 | ### Getting Started
21 | #### Prerequisites
22 | - AvaloniaUI version 11.x.x or higher
23 | - .NET Core 3.1 or higher
24 | #### Installation and Execution
25 | 1. Clone this repository.
26 | ``` bash
27 | git clone [repository URL]
28 | ```
29 | 2. Install the AvaloniaUI package.
30 | ```csharp
31 | dotnet add package Avalonia
32 | ```
33 | 3. Build and run the application.
34 | ```csharp
35 | dotnet run
36 | ```
37 | ### Contribution
38 | This project is open source and welcomes contributions from the community. You can contribute in various ways, including improving features, fixing bugs, or enhancing documentation.
39 |
40 | ### Enhanced Version with Page Navigation
41 | The BottomNavigationBar project now comes in an enhanced version that includes page navigation capabilities. This new version is designed to allow users to navigate within the application more efficiently, providing a more intuitive and smoother user experience. For more details about the enhanced project with page navigation features, please see [here](https://github.com/lukewire129/AvaloniaNavigationPage).
42 |
43 | 
44 |
45 | ### Collaboration
46 | We've found that this approach to development could easily work with other libraries as well, and we're eager to learn more about this exciting development that opens up the possibility of such collaboration.
47 |
48 |
49 |
50 | [here](https://github.com/AvaloniaInside/Shell)
51 |
--------------------------------------------------------------------------------
/README_kor.md:
--------------------------------------------------------------------------------
1 | # AvaloniaUI AvaloniaNavigationBar Project
2 | ### Introduction
3 | 이 프로젝트는 AvaloniaUI 프레임워크를 사용하여 사용자 친화적인 AvaloniaNavigationBar를 구현한 예제입니다. AvaloniaUI는 크로스 플랫폼 데스크톱 애플리케이션 개발을 위한 강력하고 유연한 도구입니다. 이 예제에서는 ListBox 컨트롤을 사용하여 하단 내비게이션 바를 만들고, 사용자 인터페이스의 효율성과 접근성을 향상시키는 방법을 보여줍니다.
4 |
5 | ### Features
6 | - **크로스 플랫폼 지원**: Windows, Linux, macOS에서 원활하게 동작합니다.
7 | - **사용자 정의 가능**: 다양한 스타일과 테마를 적용할 수 있어, 개발자가 원하는 대로 디자인을 맞춤 설정할 수 있습니다.
8 | - **향상된 사용자 경험**: 직관적인 UI를 통해 애플리케이션의 사용성을 개선합니다.
9 | ### How It's Made
10 | #### AvaloniaUI ListBox를 사용한 구현
11 | `AvaloniaNavigationBar`는 ListBox 컨트롤을 기반으로 하며, 이는 항목을 효율적으로 표시하고 사용자 입력에 반응할 수 있게 합니다. 각 항목은 사용자가 쉽게 식별하고 선택할 수 있도록 아이콘과 텍스트로 구성됩니다.
12 |
13 | ### 스타일과 테마
14 | AvaloniaUI의 유연한 스타일링 시스템을 활용하여, `AvaloniaNavigationBar`는 다양한 시각적 요구사항을 충족할 수 있도록 사용자 정의가 가능합니다. 이를 통해 애플리케이션의 전반적인 디자인과 일관성을 유지할 수 있습니다.
15 |
16 | ### Getting Started
17 | #### 필요 조건
18 | - AvaloniaUI 11.x.x 이상
19 | - .NET Core 3.1 이상
20 | #### 설치 및 실행
21 | 1. 본 리포지토리를 클론합니다.
22 | ```bash
23 | git clone [리포지토리 URL]
24 | ```
25 |
26 | 2. AvaloniaUI 패키지를 설치합니다.
27 | ```csharp
28 | dotnet add package Avalonia
29 | ```
30 |
31 | 3. 애플리케이션을 빌드하고 실행합니다.
32 | ```arduino
33 | dotnet run
34 | ```
35 |
36 | ### Contribution
37 | 이 프로젝트는 오픈소스이며, 커뮤니티의 기여를 환영합니다. 기능 개선, 버그 수정, 문서 개선 등 다양한 형태로 기여할 수 있습니다.
38 |
39 | ### Enhanced Version with Page Navigation
40 | 이제 BottomNavigationBar 프로젝트는 페이지 전환 기능을 포함하는 확장된 버전으로 제공됩니다. 이 새로운 버전은 사용자들이 애플리케이션 내에서 효율적으로 내비게이션 할 수 있도록 설계되었습니다. 이를 통해 더욱 직관적이고 매끄러운 사용자 경험을 제공합니다. 페이지 전환 기능을 포함하는 확장된 프로젝트에 대한 자세한 내용은 [여기](https://github.com/lukewire129/AvaloniaNavigationPage)에서 확인하실 수 있습니다.
41 |
42 | 
43 |
44 | ### Collaboration
45 | 이러한 개발 방식이 다른 라이브러리와도 무리 없이 연동될 수 있다는 사실을 발견했습니다.
46 | 이러한 협업의 가능성을 열어주는 이 흥미로운 발전에 대해 더 알아보고 싶다.
47 |
48 |
49 |
50 |
51 |
52 | [여기](https://github.com/AvaloniaInside/Shell)
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 디폴트 무시된 파일
2 | /shelf/
3 | /workspace.xml
4 | # Rider에서 무시된 파일
5 | /contentModel.xml
6 | /.idea.AvaloniaNavigationBar.iml
7 | /modules.xml
8 | /projectSettingsUpdater.xml
9 | # 에디터 기반 HTTP 클라이언트 요청
10 | /httpRequests/
11 | # Datasource local storage ignored files
12 | /dataSources/
13 | /dataSources.local.xml
14 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/.name:
--------------------------------------------------------------------------------
1 | AvaloniaNavigationBar
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/avalonia.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
29 |
30 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_activity_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_annotation_annotation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_annotation_annotation_experimental.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_annotation_annotation_jvm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_appcompat_appcompat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_appcompat_appcompat_resources.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_arch_core_core_common.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_arch_core_core_runtime.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_collection_collection.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_collection_collection_jvm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_concurrent_concurrent_futures.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_core_core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_core_core_ktx.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_core_core_splashscreen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_cursoradapter_cursoradapter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_customview_customview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_drawerlayout_drawerlayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_emoji2_emoji2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_emoji2_emoji2_views_helper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_fragment_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_interpolator_interpolator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_common.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_livedata_core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_process.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_runtime.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel_savedstate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_loader_loader.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_profileinstaller_profileinstaller.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_resourceinspection_resourceinspection_annotation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_savedstate_savedstate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_startup_startup_runtime.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_tracing_tracing.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_vectordrawable_vectordrawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_vectordrawable_vectordrawable_animated.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_versionedparcelable_versionedparcelable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/androidx_viewpager_viewpager.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/guava_listenablefuture.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_annotations_24_0_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_9_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_9_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_android_1_7_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_7_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/.idea/.idea.AvaloniaNavigationBar/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.5.002.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvaloniaNavigationBar", "AvaloniaNavigationBar\AvaloniaNavigationBar.csproj", "{59B5C0FF-BB1D-4EA7-8DB5-227B87B8CD11}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demo", "Demo", "{CBA0B7EF-365A-460B-A097-CCFD5015E913}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp", "DemoApp\DemoApp\DemoApp.csproj", "{1E97F589-4E0E-4EFB-92B0-52C2723B9FD1}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp.Android", "DemoApp\DemoApp.Android\DemoApp.Android.csproj", "{ED45C1CE-C063-4D78-B332-E864601532CA}"
13 | EndProject
14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp.Desktop", "DemoApp\DemoApp.Desktop\DemoApp.Desktop.csproj", "{51106FC7-AA8B-42CC-8A75-3F588E0C9072}"
15 | EndProject
16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp.iOS", "DemoApp\DemoApp.iOS\DemoApp.iOS.csproj", "{2FEAA649-67D0-4192-9F13-1E52F2B22952}"
17 | EndProject
18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DemoApp.Browser", "DemoApp\DemoApp.Browser\DemoApp.Browser.csproj", "{543F6600-8465-43FB-9DAD-E1F3AA36D436}"
19 | EndProject
20 | Global
21 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
22 | Debug|Any CPU = Debug|Any CPU
23 | Release|Any CPU = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
26 | {59B5C0FF-BB1D-4EA7-8DB5-227B87B8CD11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27 | {59B5C0FF-BB1D-4EA7-8DB5-227B87B8CD11}.Debug|Any CPU.Build.0 = Debug|Any CPU
28 | {59B5C0FF-BB1D-4EA7-8DB5-227B87B8CD11}.Release|Any CPU.ActiveCfg = Release|Any CPU
29 | {59B5C0FF-BB1D-4EA7-8DB5-227B87B8CD11}.Release|Any CPU.Build.0 = Release|Any CPU
30 | {1E97F589-4E0E-4EFB-92B0-52C2723B9FD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31 | {1E97F589-4E0E-4EFB-92B0-52C2723B9FD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
32 | {1E97F589-4E0E-4EFB-92B0-52C2723B9FD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
33 | {1E97F589-4E0E-4EFB-92B0-52C2723B9FD1}.Release|Any CPU.Build.0 = Release|Any CPU
34 | {ED45C1CE-C063-4D78-B332-E864601532CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35 | {ED45C1CE-C063-4D78-B332-E864601532CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
36 | {ED45C1CE-C063-4D78-B332-E864601532CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
37 | {ED45C1CE-C063-4D78-B332-E864601532CA}.Release|Any CPU.Build.0 = Release|Any CPU
38 | {51106FC7-AA8B-42CC-8A75-3F588E0C9072}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39 | {51106FC7-AA8B-42CC-8A75-3F588E0C9072}.Debug|Any CPU.Build.0 = Debug|Any CPU
40 | {51106FC7-AA8B-42CC-8A75-3F588E0C9072}.Release|Any CPU.ActiveCfg = Release|Any CPU
41 | {51106FC7-AA8B-42CC-8A75-3F588E0C9072}.Release|Any CPU.Build.0 = Release|Any CPU
42 | {2FEAA649-67D0-4192-9F13-1E52F2B22952}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43 | {2FEAA649-67D0-4192-9F13-1E52F2B22952}.Debug|Any CPU.Build.0 = Debug|Any CPU
44 | {2FEAA649-67D0-4192-9F13-1E52F2B22952}.Release|Any CPU.ActiveCfg = Release|Any CPU
45 | {2FEAA649-67D0-4192-9F13-1E52F2B22952}.Release|Any CPU.Build.0 = Release|Any CPU
46 | {543F6600-8465-43FB-9DAD-E1F3AA36D436}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47 | {543F6600-8465-43FB-9DAD-E1F3AA36D436}.Debug|Any CPU.Build.0 = Debug|Any CPU
48 | {543F6600-8465-43FB-9DAD-E1F3AA36D436}.Release|Any CPU.ActiveCfg = Release|Any CPU
49 | {543F6600-8465-43FB-9DAD-E1F3AA36D436}.Release|Any CPU.Build.0 = Release|Any CPU
50 | EndGlobalSection
51 | GlobalSection(SolutionProperties) = preSolution
52 | HideSolutionNode = FALSE
53 | EndGlobalSection
54 | GlobalSection(ExtensibilityGlobals) = postSolution
55 | SolutionGuid = {1785F88D-8135-46E6-A6FD-9A6F1B604570}
56 | EndGlobalSection
57 | GlobalSection(NestedProjects) = preSolution
58 | {1E97F589-4E0E-4EFB-92B0-52C2723B9FD1} = {CBA0B7EF-365A-460B-A097-CCFD5015E913}
59 | {ED45C1CE-C063-4D78-B332-E864601532CA} = {CBA0B7EF-365A-460B-A097-CCFD5015E913}
60 | {51106FC7-AA8B-42CC-8A75-3F588E0C9072} = {CBA0B7EF-365A-460B-A097-CCFD5015E913}
61 | {2FEAA649-67D0-4192-9F13-1E52F2B22952} = {CBA0B7EF-365A-460B-A097-CCFD5015E913}
62 | {543F6600-8465-43FB-9DAD-E1F3AA36D436} = {CBA0B7EF-365A-460B-A097-CCFD5015E913}
63 | EndGlobalSection
64 | EndGlobal
65 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/AvaloniaNavigationBar.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net8.0
4 | enable
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | MagicBar.axaml
21 | Code
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Interface/INavigationAdapter.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace AvaloniaNavigationBar.Interface;
4 |
5 | public interface INavigationAdapter
6 | {
7 | Action ChangedSelectedIndex { get; set; }
8 | }
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/BottomNavigatorBarStyle2.axaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
35 |
36 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/BottomNavigatorBarStyle2.axaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Avalonia.Controls;
3 | using Avalonia.Controls.Primitives;
4 | using Avalonia.Controls.Shapes;
5 | using AvaloniaNavigationBar.Interface;
6 |
7 | namespace AvaloniaNavigationBar.Style;
8 |
9 | public class BottomNavigatorBarStyle2 : ListBox,INavigationAdapter
10 | {
11 | public BottomNavigatorBarStyle2()
12 | {
13 | this.SelectionChanged += (sender, args) =>
14 | {
15 | int idx = SelectedIndex;
16 | Canvas.SetLeft(_circle, idx * 80);
17 | this.ChangedSelectedIndex?.Invoke(idx);
18 | };
19 | }
20 |
21 | private Ellipse _circle;
22 | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
23 | {
24 | base.OnApplyTemplate(e);
25 |
26 | _circle = e.NameScope.Get("PART_Circle");
27 | this.SelectedIndex = 0;
28 | }
29 |
30 | public Action ChangedSelectedIndex { get; set; }
31 | }
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/BottomNavigatorBarStyle2Item.axaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
41 |
45 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/BottomNavigatorBarStyle2Item.axaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Avalonia;
3 | using Avalonia.Controls;
4 | using Avalonia.Data;
5 | using Material.Icons;
6 | using Material.Icons.Avalonia;
7 |
8 | namespace AvaloniaNavigationBar.Style;
9 |
10 | public class BottomNavigatorBarStyle2Item : ListBoxItem
11 | {
12 | public static readonly StyledProperty KindProperty = AvaloniaProperty.Register(nameof (Kind), MaterialIconKind.Abacus, false, BindingMode.OneWay, (Func) null, (Func) null, false);
13 |
14 | public MaterialIconKind Kind
15 | {
16 | get => this.GetValue(BottomNavigatorBarStyle2Item.KindProperty);
17 | set
18 | {
19 | this.SetValue(BottomNavigatorBarStyle2Item.KindProperty, value, BindingPriority.LocalValue);
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/MagicBar.axaml:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 | M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0,0,0 z
8 |
9 | M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z
10 | M18.71,19.5C17.88,20.74 17,21.95 15.66,21.97C14.32,22 13.89,21.18 12.37,21.18C10.84,21.18 10.37,21.95 9.1,22C7.79,22.05 6.8,20.68 5.96,19.47C4.25,17 2.94,12.45 4.7,9.39C5.57,7.87 7.13,6.91 8.82,6.88C10.1,6.86 11.32,7.75 12.11,7.75C12.89,7.75 14.37,6.68 15.92,6.84C16.57,6.87 18.39,7.1 19.56,8.82C19.47,8.88 17.39,10.1 17.41,12.63C17.44,15.65 20.06,16.66 20.09,16.67C20.06,16.74 19.67,18.11 18.71,19.5M13,3.5C13.73,2.67 14.94,2.04 15.94,2C16.07,3.17 15.6,4.35 14.9,5.19C14.21,6.04 13.07,6.7 11.95,6.61C11.8,5.46 12.36,4.26 13,3.5Z
11 | M21.35,11.1H12.18V13.83H18.69C18.36,17.64 15.19,19.27 12.19,19.27C8.36,19.27 5,16.25 5,12C5,7.9 8.2,4.73 12.2,4.73C15.29,4.73 17.1,6.7 17.1,6.7L19,4.72C19,4.72 16.56,2 12.1,2C6.42,2 2.03,6.8 2.03,12C2.03,17.05 6.16,22 12.25,22C17.6,22 21.5,18.33 21.5,12.91C21.5,11.76 21.35,11.1 21.35,11.1V11.1Z
12 | M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z
13 | M7.8,2H16.2C19.4,2 22,4.6 22,7.8V16.2A5.8,5.8 0 0,1 16.2,22H7.8C4.6,22 2,19.4 2,16.2V7.8A5.8,5.8 0 0,1 7.8,2M7.6,4A3.6,3.6 0 0,0 4,7.6V16.4C4,18.39 5.61,20 7.6,20H16.4A3.6,3.6 0 0,0 20,16.4V7.6C20,5.61 18.39,4 16.4,4H7.6M17.25,5.5A1.25,1.25 0 0,1 18.5,6.75A1.25,1.25 0 0,1 17.25,8A1.25,1.25 0 0,1 16,6.75A1.25,1.25 0 0,1 17.25,5.5M12,7A5,5 0 0,1 17,12A5,5 0 0,1 12,17A5,5 0 0,1 7,12A5,5 0 0,1 12,7M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9Z
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
41 |
51 |
65 |
69 |
72 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
123 |
133 |
138 |
139 |
140 |
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/MagicBar.axaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Avalonia.Controls;
3 | using Avalonia.Controls.Primitives;
4 | using AvaloniaNavigationBar.Interface;
5 |
6 | namespace AvaloniaNavigationBar.Style;
7 |
8 | public class MagicBar : Navibar
9 | {
10 | static MagicBar()
11 | {
12 | }
13 | public MagicBar()
14 | {
15 | this.SelectionChanged += (sender, args) =>
16 | {
17 | int idx = SelectedIndex;
18 | Canvas.SetLeft(_circle, idx * 80);
19 | this.ChangedSelectedIndex?.Invoke(idx);
20 | };
21 | }
22 |
23 | private Grid _circle;
24 | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
25 | {
26 | base.OnApplyTemplate(e);
27 |
28 | _circle = e.NameScope.Get("PART_Circle");
29 | this.SelectedIndex = 0;
30 | }
31 | }
--------------------------------------------------------------------------------
/src/AvaloniaNavigationBar/Style/Navibar.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Avalonia.Controls;
3 | using AvaloniaNavigationBar.Interface;
4 |
5 | namespace AvaloniaNavigationBar.Style;
6 |
7 | public class Navibar : ListBox, INavigationAdapter
8 | {
9 | public Action ChangedSelectedIndex { get; set; }
10 | }
--------------------------------------------------------------------------------
/src/DemoApp/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Ll]og/
33 | [Ll]ogs/
34 |
35 | # Visual Studio 2015/2017 cache/options directory
36 | .vs/
37 | # Uncomment if you have tasks that create the project's static files in wwwroot
38 | #wwwroot/
39 |
40 | # Visual Studio 2017 auto generated files
41 | Generated\ Files/
42 |
43 | # MSTest test Results
44 | [Tt]est[Rr]esult*/
45 | [Bb]uild[Ll]og.*
46 |
47 | # NUnit
48 | *.VisualState.xml
49 | TestResult.xml
50 | nunit-*.xml
51 |
52 | # Build Results of an ATL Project
53 | [Dd]ebugPS/
54 | [Rr]eleasePS/
55 | dlldata.c
56 |
57 | # Benchmark Results
58 | BenchmarkDotNet.Artifacts/
59 |
60 | # .NET Core
61 | project.lock.json
62 | project.fragment.lock.json
63 | artifacts/
64 |
65 | # Tye
66 | .tye/
67 |
68 | # ASP.NET Scaffolding
69 | ScaffoldingReadMe.txt
70 |
71 | # StyleCop
72 | StyleCopReport.xml
73 |
74 | # Files built by Visual Studio
75 | *_i.c
76 | *_p.c
77 | *_h.h
78 | *.ilk
79 | *.meta
80 | *.obj
81 | *.iobj
82 | *.pch
83 | *.pdb
84 | *.ipdb
85 | *.pgc
86 | *.pgd
87 | *.rsp
88 | *.sbr
89 | *.tlb
90 | *.tli
91 | *.tlh
92 | *.tmp
93 | *.tmp_proj
94 | *_wpftmp.csproj
95 | *.log
96 | *.vspscc
97 | *.vssscc
98 | .builds
99 | *.pidb
100 | *.svclog
101 | *.scc
102 |
103 | # Chutzpah Test files
104 | _Chutzpah*
105 |
106 | # Visual C++ cache files
107 | ipch/
108 | *.aps
109 | *.ncb
110 | *.opendb
111 | *.opensdf
112 | *.sdf
113 | *.cachefile
114 | *.VC.db
115 | *.VC.VC.opendb
116 |
117 | # Visual Studio profiler
118 | *.psess
119 | *.vsp
120 | *.vspx
121 | *.sap
122 |
123 | # Visual Studio Trace Files
124 | *.e2e
125 |
126 | # TFS 2012 Local Workspace
127 | $tf/
128 |
129 | # Guidance Automation Toolkit
130 | *.gpState
131 |
132 | # ReSharper is a .NET coding add-in
133 | _ReSharper*/
134 | *.[Rr]e[Ss]harper
135 | *.DotSettings.user
136 |
137 | # TeamCity is a build add-in
138 | _TeamCity*
139 |
140 | # DotCover is a Code Coverage Tool
141 | *.dotCover
142 |
143 | # AxoCover is a Code Coverage Tool
144 | .axoCover/*
145 | !.axoCover/settings.json
146 |
147 | # Coverlet is a free, cross platform Code Coverage Tool
148 | coverage*.json
149 | coverage*.xml
150 | coverage*.info
151 |
152 | # Visual Studio code coverage results
153 | *.coverage
154 | *.coveragexml
155 |
156 | # NCrunch
157 | _NCrunch_*
158 | .*crunch*.local.xml
159 | nCrunchTemp_*
160 |
161 | # MightyMoose
162 | *.mm.*
163 | AutoTest.Net/
164 |
165 | # Web workbench (sass)
166 | .sass-cache/
167 |
168 | # Installshield output folder
169 | [Ee]xpress/
170 |
171 | # DocProject is a documentation generator add-in
172 | DocProject/buildhelp/
173 | DocProject/Help/*.HxT
174 | DocProject/Help/*.HxC
175 | DocProject/Help/*.hhc
176 | DocProject/Help/*.hhk
177 | DocProject/Help/*.hhp
178 | DocProject/Help/Html2
179 | DocProject/Help/html
180 |
181 | # Click-Once directory
182 | publish/
183 |
184 | # Publish Web Output
185 | *.[Pp]ublish.xml
186 | *.azurePubxml
187 | # Note: Comment the next line if you want to checkin your web deploy settings,
188 | # but database connection strings (with potential passwords) will be unencrypted
189 | *.pubxml
190 | *.publishproj
191 |
192 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
193 | # checkin your Azure Web App publish settings, but sensitive information contained
194 | # in these scripts will be unencrypted
195 | PublishScripts/
196 |
197 | # NuGet Packages
198 | *.nupkg
199 | # NuGet Symbol Packages
200 | *.snupkg
201 | # The packages folder can be ignored because of Package Restore
202 | **/[Pp]ackages/*
203 | # except build/, which is used as an MSBuild target.
204 | !**/[Pp]ackages/build/
205 | # Uncomment if necessary however generally it will be regenerated when needed
206 | #!**/[Pp]ackages/repositories.config
207 | # NuGet v3's project.json files produces more ignorable files
208 | *.nuget.props
209 | *.nuget.targets
210 |
211 | # Microsoft Azure Build Output
212 | csx/
213 | *.build.csdef
214 |
215 | # Microsoft Azure Emulator
216 | ecf/
217 | rcf/
218 |
219 | # Windows Store app package directories and files
220 | AppPackages/
221 | BundleArtifacts/
222 | Package.StoreAssociation.xml
223 | _pkginfo.txt
224 | *.appx
225 | *.appxbundle
226 | *.appxupload
227 |
228 | # Visual Studio cache files
229 | # files ending in .cache can be ignored
230 | *.[Cc]ache
231 | # but keep track of directories ending in .cache
232 | !?*.[Cc]ache/
233 |
234 | # Others
235 | ClientBin/
236 | ~$*
237 | *~
238 | *.dbmdl
239 | *.dbproj.schemaview
240 | *.jfm
241 | *.pfx
242 | *.publishsettings
243 | orleans.codegen.cs
244 |
245 | # Including strong name files can present a security risk
246 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
247 | #*.snk
248 |
249 | # Since there are multiple workflows, uncomment next line to ignore bower_components
250 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
251 | #bower_components/
252 |
253 | # RIA/Silverlight projects
254 | Generated_Code/
255 |
256 | # Backup & report files from converting an old project file
257 | # to a newer Visual Studio version. Backup files are not needed,
258 | # because we have git ;-)
259 | _UpgradeReport_Files/
260 | Backup*/
261 | UpgradeLog*.XML
262 | UpgradeLog*.htm
263 | ServiceFabricBackup/
264 | *.rptproj.bak
265 |
266 | # SQL Server files
267 | *.mdf
268 | *.ldf
269 | *.ndf
270 |
271 | # Business Intelligence projects
272 | *.rdl.data
273 | *.bim.layout
274 | *.bim_*.settings
275 | *.rptproj.rsuser
276 | *- [Bb]ackup.rdl
277 | *- [Bb]ackup ([0-9]).rdl
278 | *- [Bb]ackup ([0-9][0-9]).rdl
279 |
280 | # Microsoft Fakes
281 | FakesAssemblies/
282 |
283 | # GhostDoc plugin setting file
284 | *.GhostDoc.xml
285 |
286 | # Node.js Tools for Visual Studio
287 | .ntvs_analysis.dat
288 | node_modules/
289 |
290 | # Visual Studio 6 build log
291 | *.plg
292 |
293 | # Visual Studio 6 workspace options file
294 | *.opt
295 |
296 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
297 | *.vbw
298 |
299 | # Visual Studio LightSwitch build output
300 | **/*.HTMLClient/GeneratedArtifacts
301 | **/*.DesktopClient/GeneratedArtifacts
302 | **/*.DesktopClient/ModelManifest.xml
303 | **/*.Server/GeneratedArtifacts
304 | **/*.Server/ModelManifest.xml
305 | _Pvt_Extensions
306 |
307 | # Paket dependency manager
308 | .paket/paket.exe
309 | paket-files/
310 |
311 | # FAKE - F# Make
312 | .fake/
313 |
314 | # CodeRush personal settings
315 | .cr/personal
316 |
317 | # Python Tools for Visual Studio (PTVS)
318 | __pycache__/
319 | *.pyc
320 |
321 | # Cake - Uncomment if you are using it
322 | # tools/**
323 | # !tools/packages.config
324 |
325 | # Tabs Studio
326 | *.tss
327 |
328 | # Telerik's JustMock configuration file
329 | *.jmconfig
330 |
331 | # BizTalk build output
332 | *.btp.cs
333 | *.btm.cs
334 | *.odx.cs
335 | *.xsd.cs
336 |
337 | # OpenCover UI analysis results
338 | OpenCover/
339 |
340 | # Azure Stream Analytics local run output
341 | ASALocalRun/
342 |
343 | # MSBuild Binary and Structured Log
344 | *.binlog
345 |
346 | # NVidia Nsight GPU debugger configuration file
347 | *.nvuser
348 |
349 | # MFractors (Xamarin productivity tool) working folder
350 | .mfractor/
351 |
352 | # Local History for Visual Studio
353 | .localhistory/
354 |
355 | # BeatPulse healthcheck temp database
356 | healthchecksdb
357 |
358 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
359 | MigrationBackup/
360 |
361 | # Ionide (cross platform F# VS Code tools) working folder
362 | .ionide/
363 |
364 | # Fody - auto-generated XML schema
365 | FodyWeavers.xsd
366 |
367 | ##
368 | ## Visual studio for Mac
369 | ##
370 |
371 |
372 | # globs
373 | Makefile.in
374 | *.userprefs
375 | *.usertasks
376 | config.make
377 | config.status
378 | aclocal.m4
379 | install-sh
380 | autom4te.cache/
381 | *.tar.gz
382 | tarballs/
383 | test-results/
384 |
385 | # Mac bundle stuff
386 | *.dmg
387 | *.app
388 |
389 | # content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
390 | # General
391 | .DS_Store
392 | .AppleDouble
393 | .LSOverride
394 |
395 | # Icon must end with two \r
396 | Icon
397 |
398 |
399 | # Thumbnails
400 | ._*
401 |
402 | # Files that might appear in the root of a volume
403 | .DocumentRevisions-V100
404 | .fseventsd
405 | .Spotlight-V100
406 | .TemporaryItems
407 | .Trashes
408 | .VolumeIcon.icns
409 | .com.apple.timemachine.donotpresent
410 |
411 | # Directories potentially created on remote AFP share
412 | .AppleDB
413 | .AppleDesktop
414 | Network Trash Folder
415 | Temporary Items
416 | .apdisk
417 |
418 | # content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
419 | # Windows thumbnail cache files
420 | Thumbs.db
421 | ehthumbs.db
422 | ehthumbs_vista.db
423 |
424 | # Dump file
425 | *.stackdump
426 |
427 | # Folder config file
428 | [Dd]esktop.ini
429 |
430 | # Recycle Bin used on file shares
431 | $RECYCLE.BIN/
432 |
433 | # Windows Installer files
434 | *.cab
435 | *.msi
436 | *.msix
437 | *.msm
438 | *.msp
439 |
440 | # Windows shortcuts
441 | *.lnk
442 |
443 | # JetBrains Rider
444 | .idea/
445 | *.sln.iml
446 |
447 | ##
448 | ## Visual Studio Code
449 | ##
450 | .vscode/*
451 | !.vscode/settings.json
452 | !.vscode/tasks.json
453 | !.vscode/launch.json
454 | !.vscode/extensions.json
455 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/DemoApp.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | Exe
4 | net8.0-android
5 | 21
6 | enable
7 | com.CompanyName.DemoApp
8 | 1
9 | 1.0
10 | apk
11 | false
12 |
13 |
14 |
15 |
16 | Resources\drawable\Icon.png
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukewire129/navigationbar-avaloniaui/f6fbffbcfc003d173e77d6aaf968e6ab0b29f35f/src/DemoApp/DemoApp.Android/Icon.png
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content.PM;
3 | using Avalonia;
4 | using Avalonia.Android;
5 |
6 | namespace DemoApp.Android;
7 |
8 | [Activity(
9 | Label = "DemoApp.Android",
10 | Theme = "@style/MyTheme.NoActionBar",
11 | Icon = "@drawable/icon",
12 | MainLauncher = true,
13 | ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)]
14 | public class MainActivity : AvaloniaMainActivity
15 | {
16 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
17 | {
18 | return base.CustomizeAppBuilder(builder)
19 | .WithInterFont();
20 | }
21 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.axml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable/
12 | icon.png
13 |
14 | layout/
15 | main.axml
16 |
17 | values/
18 | strings.xml
19 |
20 | In order to get the build system to recognize Android resources, set the build action to
21 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
22 | instead operate on resource IDs. When you compile an Android application that uses resources,
23 | the build system will package the resources for distribution and generate a class called "R"
24 | (this is an Android convention) that contains the tokens for each one of the resources
25 | included. For example, for the above Resources layout, this is what the R class would expose:
26 |
27 | public class R {
28 | public class drawable {
29 | public const int icon = 0x123;
30 | }
31 |
32 | public class layout {
33 | public const int main = 0x456;
34 | }
35 |
36 | public class strings {
37 | public const int first_string = 0xabc;
38 | public const int second_string = 0xbcd;
39 | }
40 | }
41 |
42 | You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
43 | to reference the layout/main.axml file, or R.strings.first_string to reference the first
44 | string in the dictionary file values/strings.xml.
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/drawable-night-v31/avalonia_anim.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
11 |
15 |
16 |
20 |
25 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
42 |
43 |
44 |
45 |
46 |
53 |
54 |
55 |
56 |
57 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/drawable-v31/avalonia_anim.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
11 |
15 |
16 |
21 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
46 |
47 |
48 |
49 |
50 |
57 |
58 |
59 |
60 |
61 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/drawable/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #212121
4 |
5 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
17 |
21 |
22 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
5 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/DemoApp.Browser.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net8.0-browser
4 | Exe
5 | true
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/Program.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.Versioning;
2 | using System.Threading.Tasks;
3 | using Avalonia;
4 | using Avalonia.Browser;
5 | using DemoApp;
6 |
7 | [assembly: SupportedOSPlatform("browser")]
8 |
9 | internal sealed partial class Program
10 | {
11 | private static Task Main(string[] args) => BuildAvaloniaApp()
12 | .WithInterFont()
13 | .StartBrowserAppAsync("out");
14 |
15 | public static AppBuilder BuildAvaloniaApp()
16 | => AppBuilder.Configure();
17 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | [assembly: System.Runtime.Versioning.SupportedOSPlatform("browser")]
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/Properties/launchSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "profiles": {
3 | "DemoApp.Browser": {
4 | "commandName": "Project",
5 | "launchBrowser": true,
6 | "environmentVariables": {
7 | "ASPNETCORE_ENVIRONMENT": "Development"
8 | },
9 | "applicationUrl": "https://localhost:7169;http://localhost:5235",
10 | "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/runtimeconfig.template.json:
--------------------------------------------------------------------------------
1 | {
2 | "wasmHostProperties": {
3 | "perHostConfig": [
4 | {
5 | "name": "browser",
6 | "host": "browser"
7 | }
8 | ]
9 | }
10 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/wwwroot/app.css:
--------------------------------------------------------------------------------
1 | /* HTML styles for the splash screen */
2 | .avalonia-splash {
3 | position: absolute;
4 | height: 100%;
5 | width: 100%;
6 | background: white;
7 | font-family: 'Outfit', sans-serif;
8 | justify-content: center;
9 | align-items: center;
10 | display: flex;
11 | pointer-events: none;
12 | }
13 |
14 | /* Light theme styles */
15 | @media (prefers-color-scheme: light) {
16 | .avalonia-splash {
17 | background: white;
18 | }
19 |
20 | .avalonia-splash h2 {
21 | color: #1b2a4e;
22 | }
23 |
24 | .avalonia-splash a {
25 | color: #0D6EFD;
26 | }
27 | }
28 |
29 | @media (prefers-color-scheme: dark) {
30 | .avalonia-splash {
31 | background: #1b2a4e;
32 | }
33 |
34 | .avalonia-splash h2 {
35 | color: white;
36 | }
37 |
38 | .avalonia-splash a {
39 | color: white;
40 | }
41 | }
42 |
43 | .avalonia-splash h2 {
44 | font-weight: 400;
45 | font-size: 1.5rem;
46 | }
47 |
48 | .avalonia-splash a {
49 | text-decoration: none;
50 | font-size: 2.5rem;
51 | display: block;
52 | }
53 |
54 | .avalonia-splash.splash-close {
55 | transition: opacity 200ms, display 200ms;
56 | display: none;
57 | opacity: 0;
58 | }
59 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukewire129/navigationbar-avaloniaui/f6fbffbcfc003d173e77d6aaf968e6ab0b29f35f/src/DemoApp/DemoApp.Browser/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/wwwroot/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | DemoApp.Browser
6 |
7 |
8 |
9 |
10 |
11 |
12 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Browser/wwwroot/main.js:
--------------------------------------------------------------------------------
1 | import { dotnet } from './_framework/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.runMain(config.mainAssemblyName, [globalThis.location.href]);
14 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Desktop/DemoApp.Desktop.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | WinExe
4 |
6 | net8.0
7 | enable
8 | true
9 |
10 |
11 |
12 | app.manifest
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Desktop/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Avalonia;
3 |
4 | namespace DemoApp.Desktop;
5 |
6 | sealed class Program
7 | {
8 | // Initialization code. Don't use any Avalonia, third-party APIs or any
9 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
10 | // yet and stuff might break.
11 | [STAThread]
12 | public static void Main(string[] args) => BuildAvaloniaApp()
13 | .StartWithClassicDesktopLifetime(args);
14 |
15 | // Avalonia configuration, don't remove; also used by visual designer.
16 | public static AppBuilder BuildAvaloniaApp()
17 | => AppBuilder.Configure()
18 | .UsePlatformDetect()
19 | .WithInterFont()
20 | .LogToTrace();
21 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.Desktop/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.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 |
8 | namespace DemoApp.iOS;
9 |
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | #pragma warning disable CA1711 // Identifiers should not have incorrect suffix
15 | public partial class AppDelegate : AvaloniaAppDelegate
16 | #pragma warning restore CA1711 // Identifiers should not have incorrect suffix
17 | {
18 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
19 | {
20 | return base.CustomizeAppBuilder(builder)
21 | .WithInterFont();
22 | }
23 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.iOS/DemoApp.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 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDisplayName
6 | DemoApp
7 | CFBundleIdentifier
8 | companyName.DemoApp
9 | CFBundleShortVersionString
10 | 1.0
11 | CFBundleVersion
12 | 1.0
13 | LSRequiresIPhoneOS
14 |
15 | MinimumOSVersion
16 | 13.0
17 | UIDeviceFamily
18 |
19 | 1
20 | 2
21 |
22 | UILaunchStoryboardName
23 | LaunchScreen
24 | UIRequiredDeviceCapabilities
25 |
26 | armv7
27 |
28 | UISupportedInterfaceOrientations
29 |
30 | UIInterfaceOrientationPortrait
31 | UIInterfaceOrientationPortraitUpsideDown
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using UIKit;
2 |
3 | namespace DemoApp.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/DemoApp/DemoApp.iOS/Resources/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.3.32811.315
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoApp", "DemoApp\DemoApp.csproj", "{EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}"
7 | EndProject
8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoApp.Desktop", "DemoApp.Desktop\DemoApp.Desktop.csproj", "{ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}"
9 | EndProject
10 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoApp.Browser", "DemoApp.Browser\DemoApp.Browser.csproj", "{1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}"
11 | EndProject
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoApp.iOS", "DemoApp.iOS\DemoApp.iOS.csproj", "{EBD9022F-BC83-4846-9A11-6F7F3772DC64}"
13 | EndProject
14 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DemoApp.Android", "DemoApp.Android\DemoApp.Android.csproj", "{7AD1DAC8-7FBE-49D5-8614-7321233DB82E}"
15 | EndProject
16 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3DA99C4E-89E3-4049-9C22-0A7EC60D83D8}"
17 | ProjectSection(SolutionItems) = preProject
18 | Directory.Build.props = Directory.Build.props
19 | EndProjectSection
20 | EndProject
21 | Global
22 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
23 | Debug|Any CPU = Debug|Any CPU
24 | Release|Any CPU = Release|Any CPU
25 | EndGlobalSection
26 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
27 | {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28 | {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Debug|Any CPU.Build.0 = Debug|Any CPU
29 | {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Release|Any CPU.ActiveCfg = Release|Any CPU
30 | {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Release|Any CPU.Build.0 = Release|Any CPU
31 | {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32 | {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Debug|Any CPU.Build.0 = Debug|Any CPU
33 | {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Release|Any CPU.ActiveCfg = Release|Any CPU
34 | {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Release|Any CPU.Build.0 = Release|Any CPU
35 | {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
36 | {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
37 | {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
38 | {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Release|Any CPU.Build.0 = Release|Any CPU
39 | {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
40 | {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Debug|Any CPU.Build.0 = Debug|Any CPU
41 | {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Release|Any CPU.ActiveCfg = Release|Any CPU
42 | {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Release|Any CPU.Build.0 = Release|Any CPU
43 | {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
44 | {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Debug|Any CPU.Build.0 = Debug|Any CPU
45 | {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.ActiveCfg = Release|Any CPU
46 | {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.Build.0 = Release|Any CPU
47 | EndGlobalSection
48 | GlobalSection(SolutionProperties) = preSolution
49 | HideSolutionNode = FALSE
50 | EndGlobalSection
51 | GlobalSection(ExtensibilityGlobals) = postSolution
52 | SolutionGuid = {83CB65B8-011F-4ED7-BCD3-A6CFA935EF7E}
53 | EndGlobalSection
54 | EndGlobal
55 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/App.axaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/App.axaml.cs:
--------------------------------------------------------------------------------
1 | using Avalonia;
2 | using Avalonia.Controls.ApplicationLifetimes;
3 | using Avalonia.Data.Core;
4 | using Avalonia.Data.Core.Plugins;
5 | using Avalonia.Markup.Xaml;
6 | using DemoApp.ViewModels;
7 | using DemoApp.Views;
8 |
9 | namespace DemoApp;
10 |
11 | public partial class App : Application
12 | {
13 | public override void Initialize()
14 | {
15 | AvaloniaXamlLoader.Load(this);
16 | }
17 |
18 | public override void OnFrameworkInitializationCompleted()
19 | {
20 | if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
21 | {
22 | // Line below is needed to remove Avalonia data validation.
23 | // Without this line you will get duplicate validations from both Avalonia and CT
24 | BindingPlugins.DataValidators.RemoveAt(0);
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 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Assets/avalonia-logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lukewire129/navigationbar-avaloniaui/f6fbffbcfc003d173e77d6aaf968e6ab0b29f35f/src/DemoApp/DemoApp/Assets/avalonia-logo.ico
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/DemoApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net8.0
4 | enable
5 | latest
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | BottomNavigatorBoarStyle2Page.axaml
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/ViewModels/MainViewModel.cs:
--------------------------------------------------------------------------------
1 | using CommunityToolkit.Mvvm.ComponentModel;
2 |
3 | namespace DemoApp.ViewModels;
4 |
5 | public partial class MainViewModel : ViewModelBase
6 | {
7 | [ObservableProperty] private string _greeting = "Welcome to Avalonia!";
8 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/ViewModels/ViewModelBase.cs:
--------------------------------------------------------------------------------
1 | using CommunityToolkit.Mvvm.ComponentModel;
2 |
3 | namespace DemoApp.ViewModels;
4 |
5 | public abstract class ViewModelBase : ObservableObject
6 | {
7 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/BottomNavigatorBoarStyle2Page.axaml:
--------------------------------------------------------------------------------
1 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/BottomNavigatorBoarStyle2Page.axaml.cs:
--------------------------------------------------------------------------------
1 | using Avalonia;
2 | using Avalonia.Controls;
3 | using Avalonia.Markup.Xaml;
4 |
5 | namespace DemoApp.Views;
6 |
7 | public partial class BottomNavigatorBoarStyle2Page : UserControl
8 | {
9 | public BottomNavigatorBoarStyle2Page()
10 | {
11 | InitializeComponent();
12 | }
13 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MagicBarSamplePage.axaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MagicBarSamplePage.axaml.cs:
--------------------------------------------------------------------------------
1 | using Avalonia;
2 | using Avalonia.Controls;
3 | using Avalonia.Markup.Xaml;
4 |
5 | namespace DemoApp.Views;
6 |
7 | public partial class MagicBarSamplePage : UserControl
8 | {
9 | public MagicBarSamplePage()
10 | {
11 | InitializeComponent();
12 | }
13 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MainView.axaml:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MainView.axaml.cs:
--------------------------------------------------------------------------------
1 | using Avalonia.Controls;
2 |
3 | namespace DemoApp.Views;
4 |
5 | public partial class MainView : UserControl
6 | {
7 | public MainView()
8 | {
9 | InitializeComponent();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MainWindow.axaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/DemoApp/DemoApp/Views/MainWindow.axaml.cs:
--------------------------------------------------------------------------------
1 | using Avalonia.Controls;
2 |
3 | namespace DemoApp.Views;
4 |
5 | public partial class MainWindow : Window
6 | {
7 | public MainWindow()
8 | {
9 | InitializeComponent();
10 | }
11 | }
--------------------------------------------------------------------------------
/src/DemoApp/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | enable
4 | 11.1.0
5 |
6 |
7 |
--------------------------------------------------------------------------------