diff --git a/templates/csharp/app-prism-full/.editorconfig b/templates/csharp/app-prism-full/.editorconfig new file mode 100644 index 0000000..5b51dee --- /dev/null +++ b/templates/csharp/app-prism-full/.editorconfig @@ -0,0 +1,378 @@ +# Copyright CURRENT_YEAR COMPANY_NAME +# +# This EditorConfig file provides consistent coding styles and formatting structure based on +# C# standards by Xeno Innovations for your team's projects while preserving your personal defaults. +# +# For more info: +# https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/code-style-rule-options +# + +# Remove the line below if you want to inherit .editorconfig settings from higher directories +root = true + +[*] +# All generic files should use MSDOS style endings, not Unix (lf) +# end_of_line = crlf +indent_style = space + +[*.{cs,csx}] +indent_style = space +indent_size = 4 +tab_width = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{xml,xaml,axml,axaml}] +indent_style = space +indent_size = 2 +charset = utf-8-bom +trim_trailing_whitespace = true + +[*.json] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.sln] +indent_size = 2 + +# Xml project files +[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +# Xml config files +[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.svg] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +# PList Files +[*.plist] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +# YAML files +[*.{yaml,yml}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +# Shell script files +[*.sh] +end_of_line = lf +indent_style = space +indent_size = 2 + +# Powershell +[*.{ps1,psd1,psm1}] +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.md] +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +# C# Ruleset +[*.{cs,csx}] +# Indentation preferences +csharp_indent_block_contents = true +csharp_indent_braces = false +csharp_indent_case_contents = true +csharp_indent_case_contents_when_block = false +csharp_indent_labels = one_less_than_current +csharp_indent_switch_labels = true + +## Formatting - new line options +### Require braces to be on a new line for (also known as "Allman" style) +### accessors, methods, object_collection, control_blocks, types, properties, lambdas +csharp_new_line_before_open_brace = all +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = true +csharp_new_line_before_members_in_anonymous_types = true +csharp_new_line_between_query_expression_clauses = true + +## Spaces +csharp_space_after_cast = false +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_parameter_list_parentheses = false + +# Modifier preferences +csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion + +# Organize Usings +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = true +file_header_template = unset +# file_header_template = Copyright Xeno Innovations, Inc. 2022\nSee the LICENSE file in the project root for more information. + +# this. and Me. preferences +dotnet_style_qualification_for_event = false +dotnet_style_qualification_for_field = false +dotnet_style_qualification_for_method = false +dotnet_style_qualification_for_property = false + +# Language keywords vs BCL types preferences +dotnet_style_predefined_type_for_locals_parameters_members = true +dotnet_style_predefined_type_for_member_access = true + +# Parentheses preferences +dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity +dotnet_style_parentheses_in_other_operators = never_if_unnecessary +dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity + +# Modifier preferences +dotnet_style_predefined_type_for_locals_parameters_members = true +dotnet_style_require_accessibility_modifiers = for_non_interface_members +dotnet_style_readonly_field = true + +# Expression-level preferences +dotnet_style_coalesce_expression = true +dotnet_style_collection_initializer = true +dotnet_style_explicit_tuple_names = true +dotnet_style_namespace_match_folder = true +dotnet_style_null_propagation = true +dotnet_style_object_initializer = true +dotnet_style_operator_placement_when_wrapping = beginning_of_line +dotnet_style_prefer_auto_properties = true +dotnet_style_prefer_compound_assignment = true +dotnet_style_prefer_conditional_expression_over_assignment = true +dotnet_style_prefer_conditional_expression_over_return = true +dotnet_style_prefer_inferred_anonymous_type_member_names = true +dotnet_style_prefer_inferred_tuple_names = true +dotnet_style_prefer_is_null_check_over_reference_equality_method = true +dotnet_style_prefer_simplified_boolean_expressions = true +dotnet_style_prefer_simplified_interpolation = true + +# Parameter preferences +dotnet_code_quality_unused_parameters = all + +# Suppression preferences +dotnet_remove_unnecessary_suppression_exclusions = none + +# New line preferences +#dotnet_diagnostic.IDE2000.severity = warning +dotnet_style_allow_multiple_blank_lines_experimental = false:error + +# dotnet_diagnostic.IDE2001.severity = none +csharp_style_allow_embedded_statements_on_same_line_experimental = false + +# dotnet_diagnostic.IDE2002.severity = warning +csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false + +# dotnet_diagnostic.IDE2003.severity = error +dotnet_style_allow_statement_immediately_after_block_experimental = false:error + +# Naming Conventions +## Async methods must use "Async" suffix +dotnet_naming_rule.async_methods_end_in_async.symbols = any_async_methods +dotnet_naming_rule.async_methods_end_in_async.style = end_in_async +dotnet_naming_rule.async_methods_end_in_async.severity = error +dotnet_naming_symbols.any_async_methods.applicable_kinds = method +dotnet_naming_symbols.any_async_methods.applicable_accessibilities = * +dotnet_naming_symbols.any_async_methods.required_modifiers = async +dotnet_naming_style.end_in_async.capitalization = pascal_case +dotnet_naming_style.end_in_async.required_prefix = +dotnet_naming_style.end_in_async.required_suffix = Async +dotnet_naming_style.end_in_async.word_separator = + +## private fields must prefix with an underscore +dotnet_naming_rule.private_members_with_underscore.symbols = private_fields +dotnet_naming_rule.private_members_with_underscore.style = prefix_underscore +dotnet_naming_rule.private_members_with_underscore.severity = error +dotnet_naming_symbols.private_fields.applicable_kinds = field +dotnet_naming_symbols.private_fields.applicable_accessibilities = private +dotnet_naming_style.prefix_underscore.capitalization = camel_case +dotnet_naming_style.prefix_underscore.required_prefix = _ + +## private static fields must use PascalCase (overrides '_' based on SA1311) +dotnet_naming_rule.private_static_field_naming.symbols = private_static_field_naming +dotnet_naming_rule.private_static_field_naming.style = pascal_case_style +dotnet_naming_rule.private_static_field_naming.severity = error +dotnet_naming_symbols.private_static_field_naming.applicable_kinds = field +dotnet_naming_symbols.private_static_field_naming.applicable_accessibilities = private +dotnet_naming_symbols.private_static_field_naming.required_modifiers = static, readonly +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +## Constant fields must use PascalCase +dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields +dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = error +dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style +dotnet_naming_symbols.constant_fields.applicable_kinds = field +dotnet_naming_symbols.constant_fields.applicable_accessibilities = * +dotnet_naming_symbols.constant_fields.required_modifiers = const +dotnet_naming_style.pascal_case_style.capitalization = pascal_case + +## Interfaces must have an I suffix +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.severity = error +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = +dotnet_naming_style.begins_with_i.capitalization = pascal_case +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = + +## Types and Non-Field Members must be PascalCase +dotnet_naming_rule.types_should_be_pascal_case.severity = error +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = error +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +## Code Style Rules +# IDE1005: Use conditional delegate call +csharp_style_conditional_delegate_call = true +# IDE1005: Delegate invocation can be simplified. +dotnet_diagnostic.IDE1005.severity = warning +# IDE1006: Naming Styles +dotnet_diagnostic.IDE1006.severity = error +# IDEOOO8: Use of var +dotnet_diagnostic.IDE0008.severity = none +# IDE0010: Add missing cases +dotnet_diagnostic.IDE0010.severity = none +# IDE0011: Add braces +csharp_prefer_braces = when_multiline +# IDE0025: Use expression body for properties +csharp_style_expression_bodied_properties = true +# IDE0026: Use expression body for indexers +csharp_style_expression_bodied_indexers = true +# IDE0027: Use expression body for accessors +csharp_style_expression_bodied_accessors = true +# IDE0046: Convert to conditional expression +dotnet_diagnostic.IDE0046.severity = none +# IDE0058: Expression value is never used +# csharp_style_unused_value_expression_statement_preference = discard_variable +dotnet_diagnostic.IDE0058.severity = none + +## Code Quality Rules +# CA1031: Do not catch general exception types +dotnet_diagnostic.CA1031.severity = none +# CA1822: Mark members as static +##dotnet_diagnostic.CA1822.severity = none +# CA1507: Use nameof to express symbol names +dotnet_diagnostic.CA1507.severity = error + +## Compiler +# CS0618: Type or member is obsolete +##dotnet_diagnostic.CS0618.severity = error +dotnet_diagnostic.CS0618.severity = warning +# CS1591: Missing XML comment for publicly visible type or member +dotnet_diagnostic.CS1591.severity = none + +## StyleCop.Analyzers +# SA1000: Keywords should be spaced correctly +dotnet_diagnostic.SA1000.severity = error +# SA1005: Single line comments should begin with single space +dotnet_diagnostic.SA1005.severity = error +# SA1008 +# SA1025: Spacing?? +# SA1101: PrefixLocalCallsWithThis +dotnet_diagnostic.SA1101.severity = none +# SA1116: Split parameters should start on line after declaration +dotnet_diagnostic.SA1116.severity = none +# SA1118: Parameter should not span multiple lines +dotnet_diagnostic.SA1118.severity = warning +# SA1137: Elements should have the same indentation +dotnet_diagnostic.SA1137.severity = error +# SA1124: Do not use regions +dotnet_diagnostic.SA1124.severity = error +# SA1200: UsingDirectivesMustBePlacedWithinNamespace +dotnet_diagnostic.SA1200.severity = none +# SA1201: Elements should appear in the correct order +dotnet_diagnostic.SA1201.severity = error +# SA1202: Elements should be ordered by access +dotnet_diagnostic.SA1202.severity = error +# SA1203: Constants should appear before fields +dotnet_diagnostic.SA1203.severity = error +# SA1204: Static elements should appear before instance elements +dotnet_diagnostic.SA1204.severity = error +# SA1214: Readonly fields should appear before non-readonly fields +dotnet_diagnostic.SA1214.severity = error +# SA1306: Field names should begin with lower-case letter +dotnet_diagnostic.SA1306.severity = error +# SA1309: FieldNamesMustNotBeginWithUnderscore +dotnet_diagnostic.SA1309.severity = none +# SA1313: Parameter names should begin with lower-case letter +dotnet_diagnostic.SA1313.severity = error +# SA1414: Tuple types in signatures should have element names +dotnet_diagnostic.SA1414.severity = silent +# SA1503: Braces should not be omitted +dotnet_diagnostic.SA1503.severity = none +# SA1505: Opening braces should not be floowed by a blank line +dotnet_diagnostic.SA1505.severity= error +# SA1507: Code should not contain multiple blank lines in a row +dotnet_diagnostic.SA1507.severity = error +# SA1508: Closing brac should not be preceded by a blank line +dotnet_diagnostic.SA1508.severity= error +# SA1513: Closing brace should be followed by blank line +dotnet_diagnostic.SA1513.severity = error +# SA1514: Element documentation header should be preceded by blank line +dotnet_diagnostic.SA1514.severity = error +# SA1515: Single-line comment should be preceded by blank line +dotnet_diagnostic.SA1515.severity = warning +# SA1516: Elements should be separated by blank line +dotnet_diagnostic.SA1516.severity = error +# SA1600: Elements should be documented +dotnet_diagnostic.SA1600.severity = none +# SA1602: Enumeration items should not be documented +dotnet_diagnostic.SA1602.severity = none +# SA1623: Property summary documentation should match accessors +dotnet_diagnostic.SA1623.severity = warning +# SA1633: FileMustHaveHeader +dotnet_diagnostic.SA1633.severity = silent +# SA1636: File header copyright text should match +dotnet_diagnostic.SA1636.severity = none + +# Default severity for analyzer diagnostics with category 'StyleCop.CSharp.SpacingRules' SA1028: Code should not contain trailing whitespace +dotnet_analyzer_diagnostic.category-StyleCop.CSharp.SpacingRules.severity = error + +dotnet_diagnostic.VSSpell001.severity = suggestion +dotnet_diagnostic.VSSpell002.severity = none + +# SA0001: XML comment analysis is disabled due to project configuration +dotnet_diagnostic.SA0001.severity = none + +# Ignore Generated XAML +[*.sg.cs] +# CS1591: Missing XML comment for publicly visible type or member +dotnet_diagnostic.CS1591.severity = none +dotnet_analyzer_diagnostic.CS1591.severity = none +# generated_code = true + +[WindowsAppSDK-VersionInfo.cs] +dotnet_diagnostic.CS1591.severity = none diff --git a/templates/csharp/app-prism-full/.template.config/template.json b/templates/csharp/app-prism-full/.template.config/template.json index f6966fe..02a436e 100644 --- a/templates/csharp/app-prism-full/.template.config/template.json +++ b/templates/csharp/app-prism-full/.template.config/template.json @@ -17,7 +17,7 @@ "name": "Prism.Avalonia .NET - Sample Full SideBar App", "preferNameDirectory": true, "shortName": "prism.avalonia.app.full", - "sourceName": "PrismSampleMvvmApp", + "sourceName": "SampleApp", "defaultName": "PrismSampleTemplate", "tags": { "language": "C#", diff --git a/templates/csharp/app-prism-full/App.axaml b/templates/csharp/app-prism-full/App.axaml index b265698..8816f4c 100644 --- a/templates/csharp/app-prism-full/App.axaml +++ b/templates/csharp/app-prism-full/App.axaml @@ -1,9 +1,13 @@ - + x:Class="SampleApp.App" + xmlns:local="using:SampleApp" + RequestedThemeVariant="Default"> + + + + \ No newline at end of file diff --git a/templates/csharp/app-prism-full/App.axaml.cs b/templates/csharp/app-prism-full/App.axaml.cs index aad673d..76f2424 100644 --- a/templates/csharp/app-prism-full/App.axaml.cs +++ b/templates/csharp/app-prism-full/App.axaml.cs @@ -1,57 +1,83 @@ -using System; +using System.Diagnostics; +using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; -using PrismSampleMvvmApp.ViewModels; -using PrismSampleMvvmApp.Views; using Prism.DryIoc; using Prism.Ioc; +using Prism.Modularity; using Prism.Navigation.Regions; -using PrismSampleMvvmApp.Services; +using SampleApp.Services; +using SampleApp.ViewModels; +using SampleApp.Views; -namespace PrismSampleMvvmApp; +namespace SampleApp; -public class App : PrismApplication +public partial class App : PrismApplication { - public App() - { - Console.WriteLine("Constructor"); - } - public override void Initialize() { - Console.WriteLine("Initialize"); AvaloniaXamlLoader.Load(this); - + + // Required when overriding Initialize base.Initialize(); } - protected override void OnInitialized() + protected override AvaloniaObject CreateShell() { - var regionManager = Container.Resolve(); - regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(DashboardView)); - regionManager.RegisterViewWithRegion(RegionNames.SidebarRegion, typeof(SidebarView)); + Debug.WriteLine("CreateShell()"); + return Container.Resolve(); } - + protected override void RegisterTypes(IContainerRegistry containerRegistry) { - Console.WriteLine("RegisterTypes()"); + Debug.WriteLine("RegisterTypes()"); + + // Note: + // SidebarView isn't listed, note we're using `AutoWireViewModel` in the View's AXAML. + // See the line, `prism:ViewModelLocator.AutoWireViewModel="True"` // Services containerRegistry.RegisterSingleton(); - // Views - Generic - containerRegistry.Register(); - containerRegistry.Register(); - // Views - Region Navigation containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); - containerRegistry.RegisterForNavigation(); + containerRegistry.RegisterForNavigation(); + + // Dialogs, etc. } - protected override Window CreateShell() + /// Register optional modules in the catalog. + /// Module Catalog. + protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { - Console.WriteLine("CreateShell()"); - return Container.Resolve(); + Debug.WriteLine("ConfigureModuleCatalog()"); + base.ConfigureModuleCatalog(moduleCatalog); + } + + /// Called after Initialize. + protected override void OnInitialized() + { + Debug.WriteLine("OnInitialized()"); + + // Register Views to the Region it will appear in. Don't register them in the ViewModel. + var regionManager = Container.Resolve(); + + // WARNING: Prism v11.0.0-prev4 + // - DataTemplates MUST define a DataType or else an XAML error will be thrown + // - Error: DataTemplate inside of DataTemplates must have a DataType set + regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(DashboardView)); + regionManager.RegisterViewWithRegion(RegionNames.SidebarRegion, typeof(SidebarView)); + + ////regionManager.RegisterViewWithRegion(RegionNames.DynamicSettingsListRegion, typeof(Setting1View)); + ////regionManager.RegisterViewWithRegion(RegionNames.DynamicSettingsListRegion, typeof(Setting2View)); + } + + /// Custom region adapter mappings. + /// Region Adapters. + protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings) + { + Debug.WriteLine("ConfigureRegionAdapterMappings()"); + regionAdapterMappings.RegisterMapping(); } } diff --git a/templates/csharp/app-prism-full/Assets/Prism.Avalonia.png b/templates/csharp/app-prism-full/Assets/Prism.Avalonia.png deleted file mode 100644 index 1d1c114..0000000 Binary files a/templates/csharp/app-prism-full/Assets/Prism.Avalonia.png and /dev/null differ diff --git a/templates/csharp/app-prism-full/Assets/logo.ico b/templates/csharp/app-prism-full/Assets/logo.ico new file mode 100644 index 0000000..e16d84d Binary files /dev/null and b/templates/csharp/app-prism-full/Assets/logo.ico differ diff --git a/templates/csharp/app-prism-full/Models/-.- b/templates/csharp/app-prism-full/Models/-.- deleted file mode 100644 index e69de29..0000000 diff --git a/templates/csharp/app-prism-full/PrismSampleMvvmApp.csproj b/templates/csharp/app-prism-full/PrismSampleMvvmApp.csproj deleted file mode 100644 index 0fd27f3..0000000 --- a/templates/csharp/app-prism-full/PrismSampleMvvmApp.csproj +++ /dev/null @@ -1,29 +0,0 @@ - - - WinExe - net8.0 - enable - true - app.manifest - true - latest - - - - - - - - - - - - - - - - - - - - diff --git a/templates/csharp/app-prism-full/Program.cs b/templates/csharp/app-prism-full/Program.cs index 262f908..aa5cd14 100644 --- a/templates/csharp/app-prism-full/Program.cs +++ b/templates/csharp/app-prism-full/Program.cs @@ -1,21 +1,33 @@ -using Avalonia; +using System; +using System.Diagnostics.CodeAnalysis; +using Avalonia; -namespace PrismSampleMvvmApp; +namespace SampleApp; public class Program { - static void Main(string[] args) => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + [ExcludeFromCodeCoverage] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() { var builder = AppBuilder .Configure() .UsePlatformDetect() .With(new X11PlatformOptions { EnableMultiTouch = true, UseDBusMenu = true, }) - .With(new Win32PlatformOptions { }) - .LogToTrace() + .WithInterFont() .UseSkia(); +#if DEBUG + builder.LogToTrace(); +#endif + return builder; } -} \ No newline at end of file +} diff --git a/templates/csharp/app-prism-full/RegionNames.cs b/templates/csharp/app-prism-full/RegionNames.cs index c86cf3d..5932128 100644 --- a/templates/csharp/app-prism-full/RegionNames.cs +++ b/templates/csharp/app-prism-full/RegionNames.cs @@ -1,8 +1,9 @@ -namespace PrismSampleMvvmApp; +namespace SampleApp; public static class RegionNames { public const string ContentRegion = "ContentRegion"; public const string FooterRegion = "FooterRegion"; public const string SidebarRegion = "SidebarRegion"; -} \ No newline at end of file + public const string DynamicSettingsListRegion = "DynamicSettingsListRegion"; +} diff --git a/templates/csharp/app-prism-full/SampleApp.csproj b/templates/csharp/app-prism-full/SampleApp.csproj new file mode 100644 index 0000000..aab2eb9 --- /dev/null +++ b/templates/csharp/app-prism-full/SampleApp.csproj @@ -0,0 +1,27 @@ + + + WinExe + net8.0 + enable + true + app.manifest + true + + + + + + + + + + + + + + + + + + + diff --git a/templates/csharp/app-prism-full/Services/INotificationService.cs b/templates/csharp/app-prism-full/Services/INotifictionService.cs similarity index 65% rename from templates/csharp/app-prism-full/Services/INotificationService.cs rename to templates/csharp/app-prism-full/Services/INotifictionService.cs index 1126a72..63610df 100644 --- a/templates/csharp/app-prism-full/Services/INotificationService.cs +++ b/templates/csharp/app-prism-full/Services/INotifictionService.cs @@ -1,13 +1,13 @@ -using System; +using System; using Avalonia.Controls; -namespace PrismSampleMvvmApp.Services; +namespace SampleApp.Services; public interface INotificationService { int NotificationTimeout { get; set; } - void SetHostWindow(Window window); + void SetHostWindow(TopLevel window); void Show(string title, string message, Action? onClick = null); -} \ No newline at end of file +} diff --git a/templates/csharp/app-prism-full/Services/NotificationService.cs b/templates/csharp/app-prism-full/Services/NotifictionService.cs similarity index 74% rename from templates/csharp/app-prism-full/Services/NotificationService.cs rename to templates/csharp/app-prism-full/Services/NotifictionService.cs index 575fa51..535a994 100644 --- a/templates/csharp/app-prism-full/Services/NotificationService.cs +++ b/templates/csharp/app-prism-full/Services/NotifictionService.cs @@ -1,9 +1,9 @@ -using System; +using System; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Notifications; -namespace PrismSampleMvvmApp.Services; +namespace SampleApp.Services; public class NotificationService : INotificationService { @@ -13,15 +13,12 @@ public class NotificationService : INotificationService public int NotificationTimeout { get => _notificationTimeout; - set - { - _notificationTimeout = (value < 0) ? 0 : value; - } + set => _notificationTimeout = (value < 0) ? 0 : value; } /// Set the host window. /// Parent window. - public void SetHostWindow(Window hostWindow) + public void SetHostWindow(TopLevel hostWindow) { var notificationManager = new WindowNotificationManager(hostWindow) { @@ -43,11 +40,11 @@ public void Show(string title, string message, Action? onClick = null) { nm.Show( new Notification( - title, - message, - NotificationType.Information, - TimeSpan.FromSeconds(_notificationTimeout), - onClick)); + title, + message, + NotificationType.Information, + TimeSpan.FromSeconds(_notificationTimeout), + onClick)); } } -} \ No newline at end of file +} diff --git a/templates/csharp/app-prism-full/Styles/Icons.axaml b/templates/csharp/app-prism-full/Styles/Icons.axaml index 47e35b3..f92c78e 100644 --- a/templates/csharp/app-prism-full/Styles/Icons.axaml +++ b/templates/csharp/app-prism-full/Styles/Icons.axaml @@ -1,17 +1,22 @@  + + - - + + + + - + + + + diff --git a/templates/csharp/app-prism-full/Views/SettingsSubView.axaml.cs b/templates/csharp/app-prism-full/Views/SettingsSubView.axaml.cs new file mode 100644 index 0000000..130c465 --- /dev/null +++ b/templates/csharp/app-prism-full/Views/SettingsSubView.axaml.cs @@ -0,0 +1,13 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; + +namespace SampleApp.Views; + +public partial class SettingsSubView : UserControl +{ + public SettingsSubView() + { + InitializeComponent(); + } +} diff --git a/templates/csharp/app-prism-full/Views/SettingsView.axaml b/templates/csharp/app-prism-full/Views/SettingsView.axaml index e679086..5ce0701 100644 --- a/templates/csharp/app-prism-full/Views/SettingsView.axaml +++ b/templates/csharp/app-prism-full/Views/SettingsView.axaml @@ -2,33 +2,28 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:prism="http://prismlibrary.com/" - xmlns:vm="using:PrismSampleMvvmApp.ViewModels" + xmlns:vm="clr-namespace:SampleApp.ViewModels;assembly=SampleApp" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - prism:ViewModelLocator.AutoWireViewModel="True" - x:Class="PrismSampleMvvmApp.Views.SettingsView" + x:Class="SampleApp.Views.SettingsView" + x:CompileBindings="True" x:DataType="vm:SettingsViewModel"> - - + + - -