mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-04-24 02:16:35 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0d7a46e50 | ||
|
|
d1b862ef85 | ||
|
|
0e9dbdd528 |
240
.editorconfig
240
.editorconfig
@@ -1,240 +0,0 @@
|
|||||||
# editorconfig.org
|
|
||||||
|
|
||||||
# top-most EditorConfig file
|
|
||||||
root = true
|
|
||||||
|
|
||||||
# Default settings:
|
|
||||||
# A newline ending every file
|
|
||||||
# Use 4 spaces as indentation
|
|
||||||
[*]
|
|
||||||
insert_final_newline = true
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
|
|
||||||
# C# files
|
|
||||||
[*.cs]
|
|
||||||
# New line preferences
|
|
||||||
csharp_new_line_before_open_brace = all
|
|
||||||
csharp_new_line_before_else = true
|
|
||||||
csharp_new_line_before_catch = 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
|
|
||||||
# trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
# Indentation preferences
|
|
||||||
csharp_indent_block_contents = true
|
|
||||||
csharp_indent_braces = false
|
|
||||||
csharp_indent_case_contents = true
|
|
||||||
csharp_indent_switch_labels = true
|
|
||||||
csharp_indent_labels = one_less_than_current
|
|
||||||
|
|
||||||
# avoid this. unless absolutely necessary
|
|
||||||
dotnet_style_qualification_for_field = false:suggestion
|
|
||||||
dotnet_style_qualification_for_property = false:suggestion
|
|
||||||
dotnet_style_qualification_for_method = false:suggestion
|
|
||||||
dotnet_style_qualification_for_event = false:suggestion
|
|
||||||
|
|
||||||
# prefer var
|
|
||||||
csharp_style_var_for_built_in_types = true
|
|
||||||
csharp_style_var_when_type_is_apparent = true
|
|
||||||
csharp_style_var_elsewhere = true:suggestion
|
|
||||||
|
|
||||||
# use language keywords instead of BCL types
|
|
||||||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
|
|
||||||
dotnet_style_predefined_type_for_member_access = true:suggestion
|
|
||||||
|
|
||||||
# name all constant fields using PascalCase
|
|
||||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
|
|
||||||
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
|
|
||||||
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.required_modifiers = const
|
|
||||||
|
|
||||||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
|
|
||||||
|
|
||||||
# private static fields should have s_ prefix
|
|
||||||
dotnet_naming_rule.private_static_fields_should_have_prefix.severity = suggestion
|
|
||||||
dotnet_naming_rule.private_static_fields_should_have_prefix.symbols = private_static_fields
|
|
||||||
dotnet_naming_rule.private_static_fields_should_have_prefix.style = private_static_prefix_style
|
|
||||||
|
|
||||||
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
|
|
||||||
dotnet_naming_symbols.private_static_fields.required_modifiers = static
|
|
||||||
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private
|
|
||||||
|
|
||||||
dotnet_naming_style.private_static_prefix_style.required_prefix = s_
|
|
||||||
dotnet_naming_style.private_static_prefix_style.capitalization = camel_case
|
|
||||||
|
|
||||||
# internal and private fields should be _camelCase
|
|
||||||
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
|
|
||||||
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
|
|
||||||
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
|
|
||||||
|
|
||||||
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
|
|
||||||
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
|
|
||||||
|
|
||||||
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
|
|
||||||
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
|
|
||||||
|
|
||||||
# use accessibility modifiers
|
|
||||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
|
|
||||||
|
|
||||||
# Code style defaults
|
|
||||||
dotnet_sort_system_directives_first = true
|
|
||||||
csharp_preserve_single_line_blocks = true
|
|
||||||
csharp_preserve_single_line_statements = false
|
|
||||||
|
|
||||||
# Expression-level preferences
|
|
||||||
dotnet_style_object_initializer = true:suggestion
|
|
||||||
dotnet_style_collection_initializer = true:suggestion
|
|
||||||
dotnet_style_explicit_tuple_names = true:suggestion
|
|
||||||
dotnet_style_coalesce_expression = true:suggestion
|
|
||||||
dotnet_style_null_propagation = true:suggestion
|
|
||||||
|
|
||||||
# Expression-bodied members
|
|
||||||
csharp_style_expression_bodied_methods = false:none
|
|
||||||
csharp_style_expression_bodied_constructors = false:none
|
|
||||||
csharp_style_expression_bodied_operators = false:none
|
|
||||||
csharp_style_expression_bodied_properties = true:none
|
|
||||||
csharp_style_expression_bodied_indexers = true:none
|
|
||||||
csharp_style_expression_bodied_accessors = true:none
|
|
||||||
|
|
||||||
# Pattern matching
|
|
||||||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
|
|
||||||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
|
|
||||||
csharp_style_inlined_variable_declaration = true:suggestion
|
|
||||||
|
|
||||||
# Null checking preferences
|
|
||||||
csharp_style_throw_expression = true:suggestion
|
|
||||||
csharp_style_conditional_delegate_call = true:suggestion
|
|
||||||
|
|
||||||
# Space preferences
|
|
||||||
csharp_space_after_cast = false
|
|
||||||
csharp_space_after_colon_in_inheritance_clause = true
|
|
||||||
csharp_space_after_comma = true
|
|
||||||
csharp_space_after_dot = false
|
|
||||||
csharp_space_after_keywords_in_control_flow_statements = true
|
|
||||||
csharp_space_after_semicolon_in_for_statement = true
|
|
||||||
csharp_space_around_binary_operators = before_and_after
|
|
||||||
csharp_space_around_declaration_statements = false
|
|
||||||
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_empty_square_brackets = 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_name_and_open_parenthesis = false
|
|
||||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
|
||||||
csharp_space_between_parentheses = false
|
|
||||||
csharp_space_between_square_brackets = false
|
|
||||||
space_within_single_line_array_initializer_braces = true
|
|
||||||
|
|
||||||
#Net Analyzer
|
|
||||||
dotnet_analyzer_diagnostic.category-Performance.severity = none #error - Uncomment when all violations are fixed.
|
|
||||||
|
|
||||||
# CA1018: Mark attributes with AttributeUsageAttribute
|
|
||||||
dotnet_diagnostic.CA1018.severity = warning
|
|
||||||
# CA1304: Specify CultureInfo
|
|
||||||
dotnet_diagnostic.CA1304.severity = warning
|
|
||||||
# CA1802: Use literals where appropriate
|
|
||||||
dotnet_diagnostic.CA1802.severity = warning
|
|
||||||
# CA1813: Avoid unsealed attributes
|
|
||||||
dotnet_diagnostic.CA1813.severity = warning
|
|
||||||
# CA1815: Override equals and operator equals on value types
|
|
||||||
dotnet_diagnostic.CA1815.severity = warning
|
|
||||||
# CA1820: Test for empty strings using string length
|
|
||||||
dotnet_diagnostic.CA1820.severity = warning
|
|
||||||
# CA1821: Remove empty finalizers
|
|
||||||
dotnet_diagnostic.CA1821.severity = warning
|
|
||||||
# CA1822: Mark members as static
|
|
||||||
dotnet_diagnostic.CA1822.severity = suggestion
|
|
||||||
dotnet_code_quality.CA1822.api_surface = private, internal
|
|
||||||
# CA1823: Avoid unused private fields
|
|
||||||
dotnet_diagnostic.CA1823.severity = warning
|
|
||||||
# CA1825: Avoid zero-length array allocations
|
|
||||||
dotnet_diagnostic.CA1825.severity = warning
|
|
||||||
# CA1826: Use property instead of Linq Enumerable method
|
|
||||||
dotnet_diagnostic.CA1826.severity = suggestion
|
|
||||||
# CA1827: Do not use Count/LongCount when Any can be used
|
|
||||||
dotnet_diagnostic.CA1827.severity = warning
|
|
||||||
# CA1828: Do not use CountAsync/LongCountAsync when AnyAsync can be used
|
|
||||||
dotnet_diagnostic.CA1828.severity = warning
|
|
||||||
# CA1829: Use Length/Count property instead of Enumerable.Count method
|
|
||||||
dotnet_diagnostic.CA1829.severity = warning
|
|
||||||
#CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters
|
|
||||||
dotnet_diagnostic.CA1847.severity = warning
|
|
||||||
# CA1851: Possible multiple enumerations of IEnumerable collection
|
|
||||||
dotnet_diagnostic.CA1851.severity = warning
|
|
||||||
#CA1854: Prefer the IDictionary.TryGetValue(TKey, out TValue) method
|
|
||||||
dotnet_diagnostic.CA1854.severity = warning
|
|
||||||
#CA2211:Non-constant fields should not be visible
|
|
||||||
dotnet_diagnostic.CA2211.severity = warning
|
|
||||||
|
|
||||||
# Wrapping preferences
|
|
||||||
csharp_wrap_before_ternary_opsigns = false
|
|
||||||
|
|
||||||
# Avalonia PublicAnalyzer preferences
|
|
||||||
dotnet_diagnostic.AVP1000.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1001.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1002.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1010.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1011.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1012.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1013.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1020.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1021.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1022.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1030.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1031.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1032.severity = warning
|
|
||||||
dotnet_diagnostic.AVP1040.severity = warning
|
|
||||||
dotnet_diagnostic.AVA2001.severity = warning
|
|
||||||
|
|
||||||
# Xaml files
|
|
||||||
[*.{xaml,axaml}]
|
|
||||||
indent_size = 2
|
|
||||||
# DuplicateSetterError
|
|
||||||
avalonia_xaml_diagnostic.AVLN2203.severity = warning
|
|
||||||
# StyleInMergedDictionaries
|
|
||||||
avalonia_xaml_diagnostic.AVLN2204.severity = warning
|
|
||||||
# RequiredTemplatePartMissing
|
|
||||||
avalonia_xaml_diagnostic.AVLN2205.severity = warning
|
|
||||||
# OptionalTemplatePartMissing
|
|
||||||
avalonia_xaml_diagnostic.AVLN2206.severity = info
|
|
||||||
# TemplatePartWrongType
|
|
||||||
avalonia_xaml_diagnostic.AVLN2207.severity = warning
|
|
||||||
# ItemContainerInsideTemplate
|
|
||||||
avalonia_xaml_diagnostic.AVLN2208.severity = warning
|
|
||||||
# Obsolete
|
|
||||||
avalonia_xaml_diagnostic.AVLN5001.severity = warning
|
|
||||||
|
|
||||||
# Xml project files
|
|
||||||
[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
# Xml build files
|
|
||||||
[*.builds]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
# Xml files
|
|
||||||
[*.{xml,stylecop,resx,ruleset}]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
# Xml config files
|
|
||||||
[*.{props,targets,config,nuspec}]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
[*.json]
|
|
||||||
indent_size = 2
|
|
||||||
|
|
||||||
# Shell scripts
|
|
||||||
[*.sh]
|
|
||||||
end_of_line = lf
|
|
||||||
[*.{cmd,bat}]
|
|
||||||
end_of_line = crlf
|
|
||||||
2
.github/workflows/release-tag.yml
vendored
2
.github/workflows/release-tag.yml
vendored
@@ -63,7 +63,7 @@ jobs:
|
|||||||
run: ls -R
|
run: ls -R
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
uses: softprops/action-gh-release@v3
|
uses: softprops/action-gh-release@v2
|
||||||
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
|
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
|
||||||
with:
|
with:
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||||
<AvaloniaVersion>12.0.1</AvaloniaVersion>
|
<AvaloniaVersion>12.0.0</AvaloniaVersion>
|
||||||
<DataGridVersion>12.0.0</DataGridVersion>
|
<DataGridVersion>12.0.0</DataGridVersion>
|
||||||
<SkiaSharpVersion>3.119.3-preview.1.1</SkiaSharpVersion>
|
<SkiaSharpVersion>3.119.3-preview.1.1</SkiaSharpVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
28
demo/Semi.Avalonia.Demo/Converters/FileIconConverter.cs
Normal file
28
demo/Semi.Avalonia.Demo/Converters/FileIconConverter.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Data.Converters;
|
||||||
|
using Avalonia.Metadata;
|
||||||
|
|
||||||
|
namespace Semi.Avalonia.Demo.Converters;
|
||||||
|
|
||||||
|
public class FileIconConverter : IMultiValueConverter
|
||||||
|
{
|
||||||
|
[Content] public IDictionary<string, object?> Items { get; } = new Dictionary<string, object?>();
|
||||||
|
|
||||||
|
public object? Convert(IList<object?> values, Type targetType, object? parameter, CultureInfo culture)
|
||||||
|
{
|
||||||
|
if (values[0] is bool isDirectory && values[1] is bool isOpen)
|
||||||
|
{
|
||||||
|
if (!isDirectory)
|
||||||
|
{
|
||||||
|
return Items["file"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return isOpen ? Items["folderOpen"] : Items["folderClosed"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return AvaloniaProperty.UnsetValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,40 +29,40 @@
|
|||||||
|
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
PlaceholderText="Please select a State"
|
PlaceholderText="Please select a State"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Classes="Large"
|
Classes="Large"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Classes="Small"
|
Classes="Small"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Classes="Bordered"
|
Classes="Bordered"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
PlaceholderText="Disabled"
|
PlaceholderText="Disabled"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
InnerLeftContent="https://"
|
InnerLeftContent="https://"
|
||||||
InnerRightContent=".com"
|
InnerRightContent=".com"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Width="100"
|
Width="100"
|
||||||
Classes="Large"
|
Classes="Large"
|
||||||
PlaceholderText="Large"
|
PlaceholderText="Large"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Width="100"
|
Width="100"
|
||||||
PlaceholderText="Default"
|
PlaceholderText="Default"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Width="100"
|
Width="100"
|
||||||
Classes="Small"
|
Classes="Small"
|
||||||
PlaceholderText="Small"
|
PlaceholderText="Small"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
@@ -70,17 +70,17 @@
|
|||||||
Width="100"
|
Width="100"
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
PlaceholderText="Disabled"
|
PlaceholderText="Disabled"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Width="100"
|
Width="100"
|
||||||
Classes="Bordered"
|
Classes="Bordered"
|
||||||
PlaceholderText="Bordered"
|
PlaceholderText="Bordered"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
<AutoCompleteBox
|
<AutoCompleteBox
|
||||||
Width="100"
|
Width="100"
|
||||||
Classes="Bordered"
|
Classes="Bordered"
|
||||||
IsEnabled="False"
|
IsEnabled="False"
|
||||||
ValueMemberBinding="{Binding Name,x:DataType=vm:StateData}" />
|
ValueMemberBinding="{Binding Name,DataType=vm:StateData}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<ScrollViewer DockPanel.Dock="Right" Width="260">
|
<ScrollViewer DockPanel.Dock="Right" Width="260">
|
||||||
<StackPanel Margin="12" Spacing="8">
|
<StackPanel Margin="12" Spacing="8">
|
||||||
<TextBlock Text="Configuration" FontWeight="SemiBold" FontSize="16" />
|
<TextBlock Text="Configuration" FontWeight="SemiBold" FontSize="16" />
|
||||||
<TextBlock Text="Navigation" FontWeight="SemiBold" FontSize="13" />
|
<TextBlock Text="Navigation" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
|
||||||
<Button Content="Push Page"
|
<Button Content="Push Page"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
@@ -26,6 +26,20 @@
|
|||||||
|
|
||||||
<Separator />
|
<Separator />
|
||||||
|
|
||||||
|
<TextBlock Text="Modal Actions" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
<Button Name="PushModalButton"
|
||||||
|
Content="Push Modal"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPushModal" />
|
||||||
|
<Button Name="PopModalButton"
|
||||||
|
Content="Pop Modal"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPopModal" />
|
||||||
|
<Button Name="PopAllModalsButton"
|
||||||
|
Content="Pop All Modals"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPopAllModals" />
|
||||||
|
|
||||||
<TextBlock Text="Options" FontWeight="SemiBold" FontSize="14" />
|
<TextBlock Text="Options" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
|
||||||
<CheckBox Name="HasNavBarCheck"
|
<CheckBox Name="HasNavBarCheck"
|
||||||
@@ -35,20 +49,38 @@
|
|||||||
<CheckBox Name="HasBackButtonCheck"
|
<CheckBox Name="HasBackButtonCheck"
|
||||||
Content="Has Back Button"
|
Content="Has Back Button"
|
||||||
IsChecked="True"
|
IsChecked="True"
|
||||||
IsCheckedChanged="OnHasBackButonChanged" />
|
IsCheckedChanged="OnHasBackButtonChanged" />
|
||||||
|
<CheckBox Name="HasShadowCheck"
|
||||||
|
Content="Has Shadow"
|
||||||
|
IsChecked="True"
|
||||||
|
IsCheckedChanged="OnHasShadowChanged" />
|
||||||
|
<CheckBox Name="large" Content="Large" />
|
||||||
|
|
||||||
|
<Separator />
|
||||||
|
|
||||||
|
<TextBlock Text="Modal Transition" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
<ComboBox Name="TransitionCombo"
|
||||||
|
SelectedIndex="0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
SelectionChanged="OnTransitionChanged">
|
||||||
|
<ComboBoxItem Content="Slide from Bottom" />
|
||||||
|
<ComboBoxItem Content="CrossFade" />
|
||||||
|
<ComboBoxItem Content="None" />
|
||||||
|
</ComboBox>
|
||||||
|
|
||||||
<Separator />
|
<Separator />
|
||||||
|
|
||||||
<TextBlock Text="Status" FontWeight="SemiBold" FontSize="14" />
|
<TextBlock Text="Status" FontWeight="SemiBold" FontSize="14" />
|
||||||
<TextBlock Name="StatusText"
|
<TextBlock Name="StatusText"
|
||||||
Text="Depth: 1"
|
Text="Depth: 1"
|
||||||
Opacity="0.7"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<TextBlock Name="HeaderText"
|
<TextBlock Name="HeaderText"
|
||||||
Text="Current: Home"
|
Text="Current: Home"
|
||||||
Opacity="0.7"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<ToggleSwitch Content="Large" Name="large" />
|
<TextBlock Name="ModalText"
|
||||||
|
Text="Modals: 0"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
using Avalonia.Animation;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
|
||||||
@@ -6,6 +8,7 @@ namespace Semi.Avalonia.Demo.Pages;
|
|||||||
public partial class NavigationPageDemo : UserControl
|
public partial class NavigationPageDemo : UserControl
|
||||||
{
|
{
|
||||||
private int _pageCount;
|
private int _pageCount;
|
||||||
|
private int _modalCount;
|
||||||
|
|
||||||
public NavigationPageDemo()
|
public NavigationPageDemo()
|
||||||
{
|
{
|
||||||
@@ -15,7 +18,7 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
|
|
||||||
private async void OnLoaded(object? sender, RoutedEventArgs e)
|
private async void OnLoaded(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
await DemoNav.PushAsync(NavigationDemoHelper.MakePage("Home", "Welcome!\nUse the buttons to push and pop pages.", 0), null);
|
await DemoNav.PushAsync(NavigationDemoHelper.MakePage("Home", "Welcome!\nUse the buttons to push and pop pages/modals.", 0), null);
|
||||||
UpdateStatus();
|
UpdateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,6 +45,27 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
UpdateStatus();
|
UpdateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void OnPushModal(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_modalCount++;
|
||||||
|
var modal = NavigationDemoHelper.MakePage($"Modal {_modalCount}", "This page was presented modally.\nTap 'Pop Modal' to dismiss.", _modalCount);
|
||||||
|
await DemoNav.PushModalAsync(modal);
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPopModal(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await DemoNav.PopModalAsync();
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPopAllModals(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await DemoNav.PopAllModalsAsync();
|
||||||
|
_modalCount = 0;
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnHasNavBarChanged(object? sender, RoutedEventArgs e)
|
private void OnHasNavBarChanged(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (DemoNav == null)
|
if (DemoNav == null)
|
||||||
@@ -50,7 +74,7 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
NavigationPage.SetHasNavigationBar(DemoNav.CurrentPage, HasNavBarCheck.IsChecked == true);
|
NavigationPage.SetHasNavigationBar(DemoNav.CurrentPage, HasNavBarCheck.IsChecked == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnHasBackButonChanged(object? sender, RoutedEventArgs e)
|
private void OnHasBackButtonChanged(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (DemoNav == null)
|
if (DemoNav == null)
|
||||||
return;
|
return;
|
||||||
@@ -58,9 +82,30 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
NavigationPage.SetHasBackButton(DemoNav.CurrentPage, HasBackButtonCheck.IsChecked == true);
|
NavigationPage.SetHasBackButton(DemoNav.CurrentPage, HasBackButtonCheck.IsChecked == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnHasShadowChanged(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DemoNav == null)
|
||||||
|
return;
|
||||||
|
if (DemoNav.CurrentPage != null)
|
||||||
|
DemoNav.HasShadow = HasShadowCheck.IsChecked == true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTransitionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DemoNav == null)
|
||||||
|
return;
|
||||||
|
DemoNav.ModalTransition = TransitionCombo.SelectedIndex switch
|
||||||
|
{
|
||||||
|
1 => new CrossFade(TimeSpan.FromMilliseconds(250)),
|
||||||
|
2 => null,
|
||||||
|
_ => new PageSlide(TimeSpan.FromMilliseconds(300), PageSlide.SlideAxis.Vertical)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateStatus()
|
private void UpdateStatus()
|
||||||
{
|
{
|
||||||
StatusText.Text = $"Depth: {DemoNav.StackDepth}";
|
StatusText.Text = $"Depth: {DemoNav.StackDepth}";
|
||||||
HeaderText.Text = $"Current: {DemoNav.CurrentPage?.Header ?? "(none)"}";
|
HeaderText.Text = $"Current: {DemoNav.CurrentPage?.Header ?? "(none)"}";
|
||||||
|
ModalText.Text = $"Modals: {DemoNav.ModalStack.Count}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,8 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
|
||||||
x:Class="Semi.Avalonia.Demo.Pages.WindowCustomizationsPage">
|
x:Class="Semi.Avalonia.Demo.Pages.WindowCustomizationsPage"
|
||||||
|
x:CompileBindings="True">
|
||||||
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Spacing="10"
|
Spacing="10"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
@@ -2,6 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
|
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
||||||
<AvaloniaVersion>12.0.1</AvaloniaVersion>
|
<AvaloniaVersion>12.0.0</AvaloniaVersion>
|
||||||
<DataGridVersion>12.0.0</DataGridVersion>
|
<DataGridVersion>12.0.0</DataGridVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
||||||
<Version>12.0.1</Version>
|
<Version>12.0.0</Version>
|
||||||
<PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 12.0.1</PackageReleaseNotes>
|
<PackageReleaseNotes>Update to Semi.Avalonia.ColorPicker 12.0.0</PackageReleaseNotes>
|
||||||
<Title>Semi.Avalonia.ColorPicker</Title>
|
<Title>Semi.Avalonia.ColorPicker</Title>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<ResourceDictionary
|
<ResourceDictionary
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:collections="using:Avalonia.Collections">
|
xmlns:collections="using:Avalonia.Collections"
|
||||||
|
x:CompileBindings="True">
|
||||||
<ControlTheme x:Key="DataGridCellTextBlockTheme" TargetType="TextBlock">
|
<ControlTheme x:Key="DataGridCellTextBlockTheme" TargetType="TextBlock">
|
||||||
<Setter Property="Margin" Value="{DynamicResource DataGridCellTextBlockDefaultMargin}" />
|
<Setter Property="Margin" Value="{DynamicResource DataGridCellTextBlockDefaultMargin}" />
|
||||||
<Setter Property="VerticalAlignment" Value="Center" />
|
<Setter Property="VerticalAlignment" Value="Center" />
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<ResourceDictionary
|
<ResourceDictionary
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid">
|
xmlns:conv="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls.TreeDataGrid"
|
||||||
|
x:CompileBindings="True">
|
||||||
<Design.PreviewWith>
|
<Design.PreviewWith>
|
||||||
<StackPanel Margin="20">
|
<StackPanel Margin="20">
|
||||||
<TreeDataGridColumnHeader Header="123" />
|
<TreeDataGridColumnHeader Header="123" />
|
||||||
|
|||||||
@@ -8,6 +8,26 @@
|
|||||||
<ControlTheme x:Key="{x:Type NavigationPage}" TargetType="NavigationPage">
|
<ControlTheme x:Key="{x:Type NavigationPage}" TargetType="NavigationPage">
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BarHeight" Value="{DynamicResource NavigationPageBarMinHeight}" />
|
<Setter Property="BarHeight" Value="{DynamicResource NavigationPageBarMinHeight}" />
|
||||||
|
<Setter Property="PageTransition">
|
||||||
|
<PageSlide Duration="0:0:0.3" Orientation="Horizontal" FillMode="Forward">
|
||||||
|
<PageSlide.SlideInEasing>
|
||||||
|
<SplineEasing X1="0.16" Y1="1" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideInEasing>
|
||||||
|
<PageSlide.SlideOutEasing>
|
||||||
|
<SplineEasing X1="0.2" Y1="0.85" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideOutEasing>
|
||||||
|
</PageSlide>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="ModalTransition">
|
||||||
|
<PageSlide Duration="0:0:0.25" Orientation="Vertical" FillMode="Forward">
|
||||||
|
<PageSlide.SlideInEasing>
|
||||||
|
<SplineEasing X1="0.16" Y1="1" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideInEasing>
|
||||||
|
<PageSlide.SlideOutEasing>
|
||||||
|
<SplineEasing X1="0.2" Y1="0.85" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideOutEasing>
|
||||||
|
</PageSlide>
|
||||||
|
</Setter>
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="NavigationPage">
|
<ControlTemplate TargetType="NavigationPage">
|
||||||
<Panel ClipToBounds="True">
|
<Panel ClipToBounds="True">
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<ResourceDictionary
|
<ResourceDictionary
|
||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
x:CompileBindings="True">
|
||||||
<ControlTheme x:Key="{x:Type SplitView}" TargetType="SplitView">
|
<ControlTheme x:Key="{x:Type SplitView}" TargetType="SplitView">
|
||||||
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
|
<Setter Property="OpenPaneLength" Value="{DynamicResource SplitViewOpenPaneThemeLength}" />
|
||||||
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />
|
<Setter Property="CompactPaneLength" Value="{DynamicResource SplitViewCompactPaneThemeLength}" />
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
<TargetFrameworks>net8.0;net10.0</TargetFrameworks>
|
||||||
<Version>12.0.1</Version>
|
<Version>12.0.0</Version>
|
||||||
<PackageReleaseNotes>Update to Semi.Avalonia 12.0.1</PackageReleaseNotes>
|
<PackageReleaseNotes>Update to Semi.Avalonia 12.0.0</PackageReleaseNotes>
|
||||||
<Title>Semi.Avalonia</Title>
|
<Title>Semi.Avalonia</Title>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user