From 64717c4cc3d03e84d1cdbcc88117fd19f12143be Mon Sep 17 00:00:00 2001 From: Damian Suess Date: Sun, 1 Sep 2024 11:35:00 -0400 Subject: [PATCH] Base sample Prism.Avalonia app --- Directory.Packages.props | 18 +- e2e/Avalonia/PrismAvaloniaDemo.sln | 57 +++ e2e/Avalonia/PrismAvaloniaDemo/.editorconfig | 378 ++++++++++++++++++ e2e/Avalonia/PrismAvaloniaDemo/.gitignore | 86 ++++ e2e/Avalonia/PrismAvaloniaDemo/App.axaml | 11 + e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs | 32 ++ .../PrismAvaloniaDemo/Assets/logo.ico | Bin 0 -> 16958 bytes .../PrismAvaloniaDemo.csproj | 29 ++ e2e/Avalonia/PrismAvaloniaDemo/Program.cs | 21 + .../ViewModels/MainWindowViewModel.cs | 13 + .../ViewModels/ViewModelBase.cs | 11 + .../PrismAvaloniaDemo/Views/MainWindow.axaml | 17 + .../Views/MainWindow.axaml.cs | 12 + e2e/Avalonia/PrismAvaloniaDemo/app.manifest | 18 + .../PrismAvaloniaDemo/settings.XamlStyler | 44 ++ 15 files changed, 738 insertions(+), 9 deletions(-) create mode 100644 e2e/Avalonia/PrismAvaloniaDemo.sln create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/.editorconfig create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/.gitignore create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/App.axaml create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/Assets/logo.ico create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/PrismAvaloniaDemo.csproj create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/Program.cs create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/ViewModels/MainWindowViewModel.cs create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/ViewModels/ViewModelBase.cs create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml.cs create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/app.manifest create mode 100644 e2e/Avalonia/PrismAvaloniaDemo/settings.XamlStyler diff --git a/Directory.Packages.props b/Directory.Packages.props index ddd4b2242..ce938e062 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -59,15 +59,15 @@ - - - - - - - - - + + + + + + + + + diff --git a/e2e/Avalonia/PrismAvaloniaDemo.sln b/e2e/Avalonia/PrismAvaloniaDemo.sln new file mode 100644 index 000000000..903b5aa92 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo.sln @@ -0,0 +1,57 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35122.118 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PrismAvaloniaDemo", "PrismAvaloniaDemo\PrismAvaloniaDemo.csproj", "{89EF9B20-B80E-4B4C-A202-170CC0C0B62A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Prism Library", "Prism Library", "{7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Avalonia", "..\..\src\Avalonia\Prism.Avalonia\Prism.Avalonia.csproj", "{CD50461C-B394-433A-86CA-3DBCD13E8B22}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.DryIoc.Avalonia", "..\..\src\Avalonia\Prism.DryIoc.Avalonia\Prism.DryIoc.Avalonia.csproj", "{FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Core", "..\..\src\Prism.Core\Prism.Core.csproj", "{62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prism.Events", "..\..\src\Prism.Events\Prism.Events.csproj", "{FE27B57B-F986-44B7-90CE-421034A891B9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {89EF9B20-B80E-4B4C-A202-170CC0C0B62A}.Release|Any CPU.Build.0 = Release|Any CPU + {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD50461C-B394-433A-86CA-3DBCD13E8B22}.Release|Any CPU.Build.0 = Release|Any CPU + {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2}.Release|Any CPU.Build.0 = Release|Any CPU + {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338}.Release|Any CPU.Build.0 = Release|Any CPU + {FE27B57B-F986-44B7-90CE-421034A891B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE27B57B-F986-44B7-90CE-421034A891B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE27B57B-F986-44B7-90CE-421034A891B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FE27B57B-F986-44B7-90CE-421034A891B9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {CD50461C-B394-433A-86CA-3DBCD13E8B22} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} + {FF15E73E-5D71-48DD-80D5-DDCA6A59A6B2} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} + {62ADE0CF-751D-4AC6-9C2C-21DC12CBD338} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} + {FE27B57B-F986-44B7-90CE-421034A891B9} = {7EEF2BF7-98F5-432B-B36D-DB4915CF4A3D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2E70249F-C31B-4FB3-A901-E3767E3A9FF5} + EndGlobalSection +EndGlobal diff --git a/e2e/Avalonia/PrismAvaloniaDemo/.editorconfig b/e2e/Avalonia/PrismAvaloniaDemo/.editorconfig new file mode 100644 index 000000000..845700edb --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/.editorconfig @@ -0,0 +1,378 @@ +# Copyright 2024 Xeno Innovations, Inc. +# +# 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/e2e/Avalonia/PrismAvaloniaDemo/.gitignore b/e2e/Avalonia/PrismAvaloniaDemo/.gitignore new file mode 100644 index 000000000..2ebe4cf80 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/.gitignore @@ -0,0 +1,86 @@ +# Copyright CURRENT_YEAR COMPANY_NAME +# Template for C# + +# Generic Visual Studio files +*.bak +*.csproj.user +*.suo +*.vshost.exe +*.vshost.exe.manifest +*.exe.config +*.exp +*.lib +*.pdb +*.pfx +*.user +*.vbw +*.scc +*.oca +*.userprefs +*.userosscache +*.sln.docstates +*.autorecover +*.coverage + +# VS Code +.vscode/* +!.vscode/extensions.json +!.vscode/launch.json +!.vscode/settings.json + +# SQLite datbases +*.db3 + +# Xamarin.Android Resource.Designer.cs files +**/*.Android/**/[Rr]esource.[Dd]esigner.cs +**/*.Droid/**/[Rr]esource.[Dd]esigner.cs +**/Android/**/[Rr]esource.[Dd]esigner.cs +**/Droid/**/[Rr]esource.[Dd]esigner.cs + +# Build results +[Oo]utput/ +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +.vs/ + +# NuGet Packages +*.nupkg +## The packages folder can be ignored because of Package Restore +**/packages/* +## Except build/, which is used as an MSBuild target. +!**/packages/build/ +## Uncomment if necessary however generally it will be regenerated when needed +!**/packages/repositories.config +## NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# NUnit +*.VisualState.xml +TestResult.xml + +# Installer Folder +/installer/*.exe +!/installer/autorun.exe + +# Lib folder +/lib/* +!/lib/readme.txt +!/lib/readme.md + +# Output +!/[Oo]utput/readme.txt +!/[Oo]utput/readme.md + +## USER DEFINED +/[Dd]ocs/*.csv +/[Dd]ocs/backup +/[Tt]ools diff --git a/e2e/Avalonia/PrismAvaloniaDemo/App.axaml b/e2e/Avalonia/PrismAvaloniaDemo/App.axaml new file mode 100644 index 000000000..3dca8cf60 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/App.axaml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs b/e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs new file mode 100644 index 000000000..cad82d3a7 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/App.axaml.cs @@ -0,0 +1,32 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Data.Core; +using Avalonia.Data.Core.Plugins; +using Avalonia.Markup.Xaml; +using Prism.DryIoc; +using Prism.Ioc; +using SampleApp.ViewModels; +using SampleApp.Views; + +namespace SampleApp; + +public partial class App : PrismApplication +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + + // Required when overriding Initialize + base.Initialize(); + } + + protected override AvaloniaObject CreateShell() + { + return Container.Resolve(); + } + + protected override void RegisterTypes(IContainerRegistry containerRegistry) + { + // Register you Services, Views, Dialogs, etc. + } +} diff --git a/e2e/Avalonia/PrismAvaloniaDemo/Assets/logo.ico b/e2e/Avalonia/PrismAvaloniaDemo/Assets/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..e16d84d5d02bdbba5febbea00d4e865ff81ec061 GIT binary patch literal 16958 zcmds-4{%gR9mn?wZFE3WXH=xMjfxJaMVdfJ0wkA&1nP(|I*fIgp)kY0kYIZ>NgI;8 z+>sJWlSrZbDIh}|N~vQjb%w#I#SZC=)u|nWjO{RvN>7MZioliX^eRVwet$2w>E7eL zynV^LD8~d&RF}eO*3jgY%5sz(PITaiakE_!9TSZ1`c-?u3xjYsLqJv&#O8=^I~PkyAJxc zRekA71D_qcj73Ten)6mp2*a_?eb^<#+QCy$cUfghW zUrBHw*vUcPOBbuTTn%;^gWgC}XmWGjiaPLr0CsZ0PGF}UvmT+{vo|=g^XDVN?}D8o z8-f&EP;(XRG*tGTvm0s8oaT(+PqM!UE8ExBMjmOV=882mTy}2zy(Pg>=XcZY8`18~ zbG>1IYEBdVq$D(|{I1y1H-ZamJ!yAl=eFNp+A?bVZrNK_)p^R!ZGXTYNjpC{CqRdx zBPLzIwe54ReD)6deQ&UMwVSanig(b8A5rhZUOswr}umNcj~EiLx^KHRkE{H`TOILMQ;X|(KBfK zgXNE=h2JZ7_8)WFDkpYs_tr*(U4x(df{%VvS3`%&H+jzQB|GzjeIDktJ%i0@H`g}F zXGW7>(50>~(~Aqeeg3^>Z7dn zP}Z=y3lQi*{!|HY@jslz`a>pwNNV9$n5Dls@-KW(Y6vuORUCnGS!s>f1=2gMA#d1X|p1&(d3eT=dXvuz!SkoyyK@_>Nx+u@*}shzKCIWowom_>XX&EOZJp^oK<<82A{`6zlP{y*B!LO|IlFUaz4KwbJ~G< zzbxB||Ll_s=*Ye8I{YhTIaW5^?99(P9$0Sd*YTbe@7u`ryIjZdT88KISkD}NwtQ2{ z9=Xc@{-N>2&%7r473}?e+KQXglI%KrR@cpK?8=0%1MM!^+5ThiblO$Yzh5~BJAs{^ zD{uSn;fl@sep<0*(a+{SKKTzD))n>cnje3wbp^e=L~Fh)`^95+ex{NARh3&kf31G` zVC^p13G4)R0y|;sk}Pg5eGNK*(`(gD zH6zH*ecra+)i|7cY8G|P>)*FZKJT8hpK7V*G3OkV@;y_U+THSbSDDS{XSUCyXXk~D zy_@9o?p2?sHy?fw>|>2F7xnha7=V2eWc7WVe6LG8?6JH|$j% zbSk_?WtTDFelQX2FF}&g&R#iQ;YZmMKvZ!}=74i z!T&$xxyOpvoQ66-2c6QWTWtrO^Ajj@Jos4Og36&vs1TY6`J^w%Hy`TL@PU7Wkq@bR zEOui+FYjxvkF8hwlevmSUl4Y1J`q)sP1!f;_F3;*3`P}sRly*0lmmx7oN4vj=I1S1! zW8oqO{Qj`qn~`Nn>!KgHVJ}3vI%AzSyYyEx20VAjmiIVWjTpFL_pHy``K=KHSNvSh zATh`&b{P|g7`W!Qi2<|gj&*a=)#oL%*&+t7Lss*GA@M6Qcm^!IUeKD`B=7q=@=w>$ zL^H=wufhIXU4G=d8~Vmj>&nFYT=M&oUwfXIiM(c?T=JJ9znm*;&5_LYW!g1(P9&Mk zW59LKKk`ZbQH=ro7+4PuH=Zc#E70E|xBNqn0qU9worZXhbJ!zbOnG|A><`TMD9Zv7a|{P4FD(&+~} z>{|OaqsePkw+AuccE2InWjuxv1OENV4b47`7~C}MLx{l*-{&Q>*=jrsH!Zu2MKT5- zz?#SXo1R^XK_2+|d*}Bdp7$Mrw0?^#%kat)Q9L(+|3tBz$XEdzy%mMSc5@xDk)&mV z>%OE-ByGIk_9qMCWE4PgF-G7Qh7`jU+bI6C?G|4&Y(x~5@pVK5jBC_CV7DS2eu*Cb zJSQPqU`0+`lnP&;$c>4+gfAidT%s>7!riDbE5;?kMtuY$vb(bkhq5BshMzvZ-8gW& zarjNvNdJN`^5NXL&mZ*}<%GNY%cV#**Mllh8WQ15LWHBJ!rv#tF-{~Aj^lPjEu8Sj ze6V#u!4X-Xv;k?uMAwiW@FxWFbq8|eA`8(E + + WinExe + net8.0 + enable + true + app.manifest + true + + + + + + + + + + + + + + + + + + + + + diff --git a/e2e/Avalonia/PrismAvaloniaDemo/Program.cs b/e2e/Avalonia/PrismAvaloniaDemo/Program.cs new file mode 100644 index 000000000..5e783c845 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/Program.cs @@ -0,0 +1,21 @@ +using System; +using Avalonia; + +namespace SampleApp; + +internal sealed class Program +{ + // 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] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() => AppBuilder + .Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); +} diff --git a/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/MainWindowViewModel.cs b/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/MainWindowViewModel.cs new file mode 100644 index 000000000..4efdc1b73 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/MainWindowViewModel.cs @@ -0,0 +1,13 @@ +namespace SampleApp.ViewModels; + +public class MainWindowViewModel : ViewModelBase +{ + public MainWindowViewModel() + { + Title = "Welcome to Prism.Avalonia!"; + } + +#pragma warning disable CA1822 // Mark members as static + public string Greeting => "Hello from, Prism.Avalonia!"; +#pragma warning restore CA1822 // Mark members as static +} diff --git a/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/ViewModelBase.cs b/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/ViewModelBase.cs new file mode 100644 index 000000000..229084d99 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/ViewModels/ViewModelBase.cs @@ -0,0 +1,11 @@ +using Prism.Mvvm; + +namespace SampleApp.ViewModels; + +public class ViewModelBase : BindableBase +{ + private string _title = string.Empty; + + /// Gets or sets the title of the view. + public string Title { get => _title; set => SetProperty(ref _title, value); } +} diff --git a/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml b/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml new file mode 100644 index 000000000..651f1a0e4 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml.cs b/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml.cs new file mode 100644 index 000000000..96e38830f --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/Views/MainWindow.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia.Controls; + +namespace SampleApp.Views; + +/// Main window view. +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} diff --git a/e2e/Avalonia/PrismAvaloniaDemo/app.manifest b/e2e/Avalonia/PrismAvaloniaDemo/app.manifest new file mode 100644 index 000000000..dd6799f24 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/app.manifest @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/e2e/Avalonia/PrismAvaloniaDemo/settings.XamlStyler b/e2e/Avalonia/PrismAvaloniaDemo/settings.XamlStyler new file mode 100644 index 000000000..170db9096 --- /dev/null +++ b/e2e/Avalonia/PrismAvaloniaDemo/settings.XamlStyler @@ -0,0 +1,44 @@ +{ + "AttributesTolerance": 2, + "KeepFirstAttributeOnSameLine": true, + "MaxAttributeCharactersPerLine": 0, + "MaxAttributesPerLine": 1, + "NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransfom, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter", + "SeparateByGroups": false, + "AttributeIndentation": 0, + "AttributeIndentationStyle": 1, + "RemoveDesignTimeReferences": false, + "EnableAttributeReordering": true, + "AttributeOrderingRuleGroups": [ + "xmlns, xmlns:x", + "xmlns:*", + "x:Class", + "x:*", + "*:*", + "Key, Name, Uid, Title, Text", + "Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom", + "Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight", + "Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex", + "Source", + "*", + "PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint", + "mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText", + "Storyboard.*, From, To, Duration" + ], + "FirstLineAttributes": "Text", + "OrderAttributesByName": true, + "PutEndingBracketOnNewLine": false, + "RemoveEndingTagOfEmptyElement": true, + "SpaceBeforeClosingSlash": true, + "RootElementLineBreakRule": 0, + "ReorderVSM": 2, + "ReorderGridChildren": false, + "ReorderCanvasChildren": false, + "ReorderSetters": 0, + "FormatMarkupExtension": true, + "NoNewLineMarkupExtensions": "x:Bind, Binding", + "ThicknessSeparator": 2, + "ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin", + "FormatOnSave": true, + "CommentPadding": 1 +} \ No newline at end of file