master 4f21f265b14b cached
337 files
525.0 KB
132.6k tokens
780 symbols
1 requests
Download .txt
Showing preview only (617K chars total). Download the full file or copy to clipboard to get everything.
Repository: AvaloniaUI/Avalonia.Xaml.Behaviors
Branch: master
Commit: 4f21f265b14b
Files: 337
Total size: 525.0 KB

Directory structure:
gitextract_xihcw05z/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── .github/
│   │   └── stale.yml
│   ├── FUNDING.yml
│   ├── stale.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── .nuke/
│   ├── build.schema.json
│   └── parameters.json
├── AvaloniaBehaviors.sln
├── Directory.Build.props
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.Config
├── README.md
├── _config.yml
├── azure-pipelines.yml
├── build/
│   ├── SignAssembly.props
│   ├── SourceLink.props
│   ├── XUnit.props
│   ├── behaviors.public.snk
│   └── build/
│       ├── Build.cs
│       └── _build.csproj
├── build.cmd
├── build.ps1
├── build.sh
├── global.json
├── samples/
│   ├── BehaviorsTestApplication/
│   │   ├── App.axaml
│   │   ├── App.axaml.cs
│   │   ├── BehaviorsTestApplication.csproj
│   │   ├── Converters/
│   │   │   └── ClassesToStringConverter.cs
│   │   ├── Program.cs
│   │   ├── SideBar.axaml
│   │   ├── ViewModels/
│   │   │   ├── Core/
│   │   │   │   └── ViewModelBase.cs
│   │   │   ├── ItemViewModel.cs
│   │   │   └── MainWindowViewModel.cs
│   │   └── Views/
│   │       ├── ItemView.axaml
│   │       ├── ItemView.axaml.cs
│   │       ├── MainView.axaml
│   │       ├── MainView.axaml.cs
│   │       ├── MainWindow.axaml
│   │       ├── MainWindow.axaml.cs
│   │       └── Pages/
│   │           ├── AdaptiveBehaviorView.axaml
│   │           ├── AdaptiveBehaviorView.axaml.cs
│   │           ├── AddRemoveClassActionView.axaml
│   │           ├── AddRemoveClassActionView.axaml.cs
│   │           ├── AdvancedView.axaml
│   │           ├── AdvancedView.axaml.cs
│   │           ├── ButtonClickEventTriggerBehaviorView.axaml
│   │           ├── ButtonClickEventTriggerBehaviorView.axaml.cs
│   │           ├── CallMethodActionView.axaml
│   │           ├── CallMethodActionView.axaml.cs
│   │           ├── ChangeAvaloniaPropertyActionView.axaml
│   │           ├── ChangeAvaloniaPropertyActionView.axaml.cs
│   │           ├── ChangePropertyActionView.axaml
│   │           ├── ChangePropertyActionView.axaml.cs
│   │           ├── CustomActionView.axaml
│   │           ├── CustomActionView.axaml.cs
│   │           ├── CustomBehaviorView.axaml
│   │           ├── CustomBehaviorView.axaml.cs
│   │           ├── DataTriggerBehaviorView.axaml
│   │           ├── DataTriggerBehaviorView.axaml.cs
│   │           ├── EditableListBoxView.axaml
│   │           ├── EditableListBoxView.axaml.cs
│   │           ├── EditableTreeViewView.axaml
│   │           ├── EditableTreeViewView.axaml.cs
│   │           ├── EventTriggerBehaviorView.axaml
│   │           ├── EventTriggerBehaviorView.axaml.cs
│   │           ├── InvokeCommandActionView.axaml
│   │           ├── InvokeCommandActionView.axaml.cs
│   │           ├── RoutedEventTriggerBehaviorView.axaml
│   │           ├── RoutedEventTriggerBehaviorView.axaml.cs
│   │           ├── ValueChangedTriggerBehaviorView.axaml
│   │           └── ValueChangedTriggerBehaviorView.axaml.cs
│   ├── Directory.Packages.props
│   ├── DragAndDropSample/
│   │   ├── App.axaml
│   │   ├── App.axaml.cs
│   │   ├── Behaviors/
│   │   │   ├── BaseDataGridDropHandler.cs
│   │   │   ├── ContextDragWithDirectionBehavior.cs
│   │   │   ├── ItemsDataGridDropHandler.cs
│   │   │   ├── ItemsListBoxDropHandler.cs
│   │   │   ├── NodesListBoxDropHandler.cs
│   │   │   └── NodesTreeViewDropHandler.cs
│   │   ├── DragAndDropSample.csproj
│   │   ├── Program.cs
│   │   ├── ViewLocator.cs
│   │   ├── ViewModels/
│   │   │   ├── ItemViewModel.cs
│   │   │   ├── MainWindowViewModel.cs
│   │   │   ├── NodeViewModel.cs
│   │   │   └── ViewModelBase.cs
│   │   └── Views/
│   │       ├── MainWindow.axaml
│   │       └── MainWindow.axaml.cs
│   └── DraggableDemo/
│       ├── App.axaml
│       ├── App.axaml.cs
│       ├── DraggableDemo.csproj
│       ├── MainWindow.axaml
│       ├── MainWindow.axaml.cs
│       ├── Models/
│       │   ├── Item.cs
│       │   └── Tile.cs
│       ├── Program.cs
│       └── Styles/
│           └── Custom.axaml
├── src/
│   ├── Avalonia.Xaml.Behaviors/
│   │   └── Avalonia.Xaml.Behaviors.csproj
│   ├── Avalonia.Xaml.Interactions/
│   │   ├── Avalonia.Xaml.Interactions.csproj
│   │   ├── Core/
│   │   │   ├── CallMethodAction.cs
│   │   │   ├── ChangePropertyAction.cs
│   │   │   ├── DataTriggerBehavior.cs
│   │   │   ├── EventTriggerBehavior.cs
│   │   │   └── InvokeCommandAction.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── Avalonia.Xaml.Interactions.Custom/
│   │   ├── AddClassAction.cs
│   │   ├── AttachedToVisualTreeBehavior.cs
│   │   ├── Avalonia.Xaml.Interactions.Custom.csproj
│   │   ├── BindPointerOverBehavior.cs
│   │   ├── BindTagToVisualRootDataContextBehavior.cs
│   │   ├── BindingBehavior.cs
│   │   ├── BoundsObserverBehavior.cs
│   │   ├── ButtonClickEventTriggerBehavior.cs
│   │   ├── ButtonExecuteCommandOnKeyDownBehavior.cs
│   │   ├── ChangeAvaloniaPropertyAction.cs
│   │   ├── DisposingBehavior.cs
│   │   ├── DisposingTrigger.cs
│   │   ├── DragControlBehavior.cs
│   │   ├── ExecuteCommandBehaviorBase.cs
│   │   ├── ExecuteCommandOnActivatedBehavior.cs
│   │   ├── ExecuteCommandOnDoubleTappedBehavior.cs
│   │   ├── ExecuteCommandOnGotFocusBehavior.cs
│   │   ├── ExecuteCommandOnHoldingBehavior.cs
│   │   ├── ExecuteCommandOnKeyBehaviorBase.cs
│   │   ├── ExecuteCommandOnKeyDownBehavior.cs
│   │   ├── ExecuteCommandOnKeyUpBehavior.cs
│   │   ├── ExecuteCommandOnLostFocusBehavior.cs
│   │   ├── ExecuteCommandOnPinchBehavior.cs
│   │   ├── ExecuteCommandOnPinchEndedBehavior.cs
│   │   ├── ExecuteCommandOnPointerCaptureLostBehavior.cs
│   │   ├── ExecuteCommandOnPointerEnteredBehavior.cs
│   │   ├── ExecuteCommandOnPointerExitedBehavior.cs
│   │   ├── ExecuteCommandOnPointerMovedBehavior.cs
│   │   ├── ExecuteCommandOnPointerPressedBehavior.cs
│   │   ├── ExecuteCommandOnPointerReleasedBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureRotateBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureSwipeBehavior.cs
│   │   ├── ExecuteCommandOnPointerWheelChangedBehavior.cs
│   │   ├── ExecuteCommandOnPullGestureBehavior.cs
│   │   ├── ExecuteCommandOnPullGestureEndedBehavior.cs
│   │   ├── ExecuteCommandOnRightTappedBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureEndedBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureInertiaStartingBehavior.cs
│   │   ├── ExecuteCommandOnTappedBehavior.cs
│   │   ├── ExecuteCommandOnTextInputBehavior.cs
│   │   ├── ExecuteCommandOnTextInputMethodClientRequestedBehavior.cs
│   │   ├── ExecuteCommandRoutedEventBehaviorBase.cs
│   │   ├── FadeInBehavior.cs
│   │   ├── FocusBehavior.cs
│   │   ├── FocusBehaviorBase.cs
│   │   ├── FocusControlAction.cs
│   │   ├── FocusOnAttachedBehavior.cs
│   │   ├── FocusOnAttachedToVisualTreeBehavior.cs
│   │   ├── FocusOnPointerMovedBehavior.cs
│   │   ├── FocusOnPointerPressedBehavior.cs
│   │   ├── FocusSelectedItemBehavior.cs
│   │   ├── HideFlyoutOnClickBehavior.cs
│   │   ├── HideOnKeyPressedBehavior.cs
│   │   ├── HideOnLostFocusBehavior.cs
│   │   ├── HorizontalScrollViewerBehavior.cs
│   │   ├── KeyDownTrigger.cs
│   │   ├── PopupAction.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── RemoveClassAction.cs
│   │   ├── RoutedEventTriggerBase.cs
│   │   ├── RoutedEventTriggerBehavior.cs
│   │   ├── SelectAllOnGotFocusBehavior.cs
│   │   ├── SelectListBoxItemOnPointerMovedBehavior.cs
│   │   ├── SelectingItemsControlBehavior.cs
│   │   ├── ShowBehaviorBase.cs
│   │   ├── ShowOnDoubleTappedBehavior.cs
│   │   ├── ShowOnKeyDownBehavior.cs
│   │   ├── ShowOnTappedBehavior.cs
│   │   ├── ShowPointerPositionBehavior.cs
│   │   ├── TextBoxSelectAllTextBehavior.cs
│   │   ├── ToggleIsExpandedOnDoubleTappedBehavior.cs
│   │   └── ValueChangedTriggerBehavior.cs
│   ├── Avalonia.Xaml.Interactions.DragAndDrop/
│   │   ├── Avalonia.Xaml.Interactions.DragAndDrop.csproj
│   │   ├── ContextDragBehavior.cs
│   │   ├── ContextDropBehavior.cs
│   │   ├── DropHandlerBase.cs
│   │   ├── IDragHandler.cs
│   │   ├── IDropHandler.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── TypedDragBehavior.cs
│   ├── Avalonia.Xaml.Interactions.Draggable/
│   │   ├── Avalonia.Xaml.Interactions.Draggable.csproj
│   │   ├── CanvasDragBehavior.cs
│   │   ├── GridDragBehavior.cs
│   │   ├── ItemDragBehavior.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SelectionAdorner.cs
│   │   └── Styles.axaml
│   ├── Avalonia.Xaml.Interactions.Events/
│   │   ├── Avalonia.Xaml.Interactions.Events.csproj
│   │   ├── DoubleTappedEventBehavior.cs
│   │   ├── GotFocusEventBehavior.cs
│   │   ├── KeyDownEventBehavior.cs
│   │   ├── KeyUpEventBehavior.cs
│   │   ├── LostFocusEventBehavior.cs
│   │   ├── PointerCaptureLostEventBehavior.cs
│   │   ├── PointerEnteredEventBehavior.cs
│   │   ├── PointerEventsBehavior.cs
│   │   ├── PointerExitedEventBehavior.cs
│   │   ├── PointerMovedEventBehavior.cs
│   │   ├── PointerPressedEventBehavior.cs
│   │   ├── PointerReleasedEventBehavior.cs
│   │   ├── PointerWheelChangedEventBehavior.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── RightTappedEventBehavior.cs
│   │   ├── ScrollGestureEndedEventBehavior.cs
│   │   ├── ScrollGestureEventBehavior.cs
│   │   ├── TappedEventBehavior.cs
│   │   ├── TextInputEventBehavior.cs
│   │   └── TextInputMethodClientRequestedEventBehavior.cs
│   ├── Avalonia.Xaml.Interactions.Responsive/
│   │   ├── AdaptiveBehavior.cs
│   │   ├── AdaptiveClassSetter.cs
│   │   ├── Avalonia.Xaml.Interactions.Responsive.csproj
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   └── Avalonia.Xaml.Interactivity/
│       ├── ActionCollection.cs
│       ├── Avalonia.Xaml.Interactivity.csproj
│       ├── Behavior.cs
│       ├── BehaviorCollection.cs
│       ├── BehaviorCollectionTemplate.cs
│       ├── BehaviorOfT.cs
│       ├── ComparisonConditionType.cs
│       ├── IAction.cs
│       ├── IBehavior.cs
│       ├── ITrigger.cs
│       ├── Interaction.cs
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── System/
│       │   └── Diagnostics/
│       │       └── CodeAnalysis/
│       │           └── TrimmingAttributes.cs
│       ├── Trigger.cs
│       ├── TriggerOfT.cs
│       └── TypeConverterHelper.cs
└── tests/
    ├── Avalonia.Xaml.Interactions.UnitTests/
    │   ├── App.axaml
    │   ├── App.axaml.cs
    │   ├── Avalonia.Xaml.Interactions.UnitTests.csproj
    │   ├── Core/
    │   │   ├── CallMethodAction001.axaml
    │   │   ├── CallMethodAction001.axaml.cs
    │   │   ├── CallMethodAction002.axaml
    │   │   ├── CallMethodAction002.axaml.cs
    │   │   ├── CallMethodActionTests.CallMethodAction_001.Linux.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_001.OSX.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_001.Windows.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.Linux.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.OSX.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.Windows.verified.txt
    │   │   ├── CallMethodActionTests.cs
    │   │   ├── ChangePropertyAction001.axaml
    │   │   ├── ChangePropertyAction001.axaml.cs
    │   │   ├── ChangePropertyAction002.axaml
    │   │   ├── ChangePropertyAction002.axaml.cs
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.Linux.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.OSX.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.Windows.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.Linux.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.OSX.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.Windows.verified.txt
    │   │   ├── ChangePropertyActionTests.cs
    │   │   ├── Command.cs
    │   │   ├── DataTriggerBehavior001.axaml
    │   │   ├── DataTriggerBehavior001.axaml.cs
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.Linux.verified.txt
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.OSX.verified.txt
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.Windows.verified.txt
    │   │   ├── DataTriggerBehaviorTests.cs
    │   │   ├── EventTriggerBehavior001.axaml
    │   │   ├── EventTriggerBehavior001.axaml.cs
    │   │   ├── EventTriggerBehavior002.axaml
    │   │   ├── EventTriggerBehavior002.axaml.cs
    │   │   ├── EventTriggerBehavior003.axaml
    │   │   ├── EventTriggerBehavior003.axaml.cs
    │   │   ├── EventTriggerBehavior004.axaml
    │   │   ├── EventTriggerBehavior004.axaml.cs
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.cs
    │   │   ├── InvokeCommandAction001.axaml
    │   │   ├── InvokeCommandAction001.axaml.cs
    │   │   ├── InvokeCommandAction002.axaml
    │   │   ├── InvokeCommandAction002.axaml.cs
    │   │   ├── InvokeCommandAction003.axaml
    │   │   ├── InvokeCommandAction003.axaml.cs
    │   │   ├── InvokeCommandAction004.axaml
    │   │   ├── InvokeCommandAction004.axaml.cs
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.cs
    │   │   └── TestValueConverter.cs
    │   ├── HeadlessWindowExtensions.cs
    │   ├── ModuleInit.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── TestAppBuilder.cs
    ├── Avalonia.Xaml.Interactivity.UnitTests/
    │   ├── App.axaml
    │   ├── App.axaml.cs
    │   ├── Avalonia.Xaml.Interactivity.UnitTests.csproj
    │   ├── BehaviorCollectionTemplate001.axaml
    │   ├── BehaviorCollectionTemplate001.axaml.cs
    │   ├── BehaviorCollectionTemplateTests.cs
    │   ├── BehaviorCollectionTest.cs
    │   ├── BehaviorOfTTests.cs
    │   ├── BehaviorTests.cs
    │   ├── InteractionTest.cs
    │   ├── InteractionTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── StubAction.cs
    │   ├── StubBehavior.cs
    │   ├── TestAppBuilder.cs
    │   ├── TestUitilties.cs
    │   ├── TriggerOfTTests.cs
    │   └── TriggerTests.cs
    └── Directory.Packages.props

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# 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

# 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

# static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols  = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style    = static_prefix_style

dotnet_naming_symbols.static_fields.applicable_kinds   = field
dotnet_naming_symbols.static_fields.required_modifiers = static

dotnet_naming_style.static_prefix_style.required_prefix = s_
dotnet_naming_style.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 = do_not_ignore
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

# Xaml files
[*.{xaml,axaml}]
indent_style = space
indent_size = 2

# 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

# Shell scripts
[*.sh]
end_of_line = lf
[*.{cmd, bat}]
end_of_line = crlf

# Verify settings
[*.{received,verified}.{txt,xml,json}]
charset = "utf-8-bom"
end_of_line = lf
indent_size = unset
indent_style = unset
insert_final_newline = false
tab_width = unset
trim_trailing_whitespace = false

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain


# VerifyTests
*.png binary
*.verified.txt text eol=lf working-tree-encoding=UTF-8
*.verified.xml text eol=lf working-tree-encoding=UTF-8
*.verified.json text eol=lf working-tree-encoding=UTF-8

================================================
FILE: .github/.github/stale.yml
================================================
# https://probot.github.io/apps/stale/

# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60

# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7

# Issues with these labels will never be considered stale
exemptLabels:
  - pinned
  - security

# Label to use when marking an issue as stale
staleLabel: stale

# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.

# Comment to post when closing a stale issue. Set to `false` to disable
# closeComment: false


================================================
FILE: .github/FUNDING.yml
================================================
github: [wieslawsoltes]


================================================
FILE: .github/stale.yml
================================================
# https://probot.github.io/apps/stale/

# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60

# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7

# Issues with these labels will never be considered stale
exemptLabels:
  - pinned
  - security

# Label to use when marking an issue as stale
staleLabel: stale

# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions.

# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: true


================================================
FILE: .github/workflows/build.yml
================================================
name: CI

on:
  push:
    branches:
    - master
    - release/*
  pull_request:
    branches:
    - master

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
    name: Build ${{ matrix.os }}
    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v1
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
    - name: Build Release
      run: dotnet build --configuration Release
    - name: Test Release
      run: dotnet test --configuration Release


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# 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

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Typescript v1 declaration files
typings/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
tools/**
# !tools/packages.config

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# macOS
.DS_Store

# VerifyTests
*.received.*

================================================
FILE: .nuke/build.schema.json
================================================
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Build Schema",
  "$ref": "#/definitions/build",
  "definitions": {
    "build": {
      "type": "object",
      "properties": {
        "Configuration": {
          "type": "string",
          "description": "configuration"
        },
        "Continue": {
          "type": "boolean",
          "description": "Indicates to continue a previously failed build attempt"
        },
        "Help": {
          "type": "boolean",
          "description": "Shows the help text for this build assembly"
        },
        "Host": {
          "type": "string",
          "description": "Host for execution. Default is 'automatic'",
          "enum": [
            "AppVeyor",
            "AzurePipelines",
            "Bamboo",
            "Bitrise",
            "GitHubActions",
            "GitLab",
            "Jenkins",
            "Rider",
            "SpaceAutomation",
            "TeamCity",
            "Terminal",
            "TravisCI",
            "VisualStudio",
            "VSCode"
          ]
        },
        "NoLogo": {
          "type": "boolean",
          "description": "Disables displaying the NUKE logo"
        },
        "Partition": {
          "type": "string",
          "description": "Partition to use on CI"
        },
        "Plan": {
          "type": "boolean",
          "description": "Shows the execution plan (HTML)"
        },
        "Profile": {
          "type": "array",
          "description": "Defines the profiles to load",
          "items": {
            "type": "string"
          }
        },
        "PublishFramework": {
          "type": "string",
          "description": "publish-framework"
        },
        "PublishProject": {
          "type": "string",
          "description": "publish-project"
        },
        "PublishRuntime": {
          "type": "string",
          "description": "publish-runtime"
        },
        "PublishSelfContained": {
          "type": "boolean",
          "description": "publish-self-contained"
        },
        "Root": {
          "type": "string",
          "description": "Root directory during build execution"
        },
        "Skip": {
          "type": "array",
          "description": "List of targets to be skipped. Empty list skips all dependencies",
          "items": {
            "type": "string",
            "enum": [
              "Clean",
              "Compile",
              "Pack",
              "Publish",
              "Restore",
              "Test"
            ]
          }
        },
        "Solution": {
          "type": "string",
          "description": "Path to a solution file that is automatically loaded"
        },
        "Target": {
          "type": "array",
          "description": "List of targets to be invoked. Default is '{default_target}'",
          "items": {
            "type": "string",
            "enum": [
              "Clean",
              "Compile",
              "Pack",
              "Publish",
              "Restore",
              "Test"
            ]
          }
        },
        "Verbosity": {
          "type": "string",
          "description": "Logging verbosity during build execution. Default is 'Normal'",
          "enum": [
            "Minimal",
            "Normal",
            "Quiet",
            "Verbose"
          ]
        },
        "VersionSuffix": {
          "type": "string",
          "description": "version-suffix"
        }
      }
    }
  }
}

================================================
FILE: .nuke/parameters.json
================================================
{
  "$schema": "./build.schema.json",
  "Solution": "AvaloniaBehaviors.sln"
}

================================================
FILE: AvaloniaBehaviors.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28315.86
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}"
	ProjectSection(SolutionItems) = preProject
		tests\Directory.Packages.props = tests\Directory.Packages.props
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{9B9E3891-2366-4253-A952-D08BCEB71098}"
	ProjectSection(SolutionItems) = preProject
		samples\Directory.Packages.props = samples\Directory.Packages.props
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BehaviorsTestApplication", "samples\BehaviorsTestApplication\BehaviorsTestApplication.csproj", "{EA113F1A-D8D7-4142-9948-353270E7EBAE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Xaml.Behaviors", "src\Avalonia.Xaml.Behaviors\Avalonia.Xaml.Behaviors.csproj", "{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Xaml.Interactivity", "src\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj", "{14006EB4-66E9-4B58-BF5F-5A1983BF4621}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Xaml.Interactions", "src\Avalonia.Xaml.Interactions\Avalonia.Xaml.Interactions.csproj", "{ED03EEAD-938F-447B-BF0B-30857AE78BFF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Xaml.Interactivity.UnitTests", "tests\Avalonia.Xaml.Interactivity.UnitTests\Avalonia.Xaml.Interactivity.UnitTests.csproj", "{C2229490-39CA-4192-A28C-1B5EC186E027}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Xaml.Interactions.UnitTests", "tests\Avalonia.Xaml.Interactions.UnitTests\Avalonia.Xaml.Interactions.UnitTests.csproj", "{80D2C64D-B560-475D-941F-D5F28DDB2591}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{84224365-32B6-46AF-85A2-45640E6D7EEB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{2913483A-3E55-44AE-86BB-88511F372191}"
	ProjectSection(SolutionItems) = preProject
		.editorconfig = .editorconfig
		build\behaviors.public.snk = build\behaviors.public.snk
		build.ps1 = build.ps1
		build.sh = build.sh
		global.json = global.json
		azure-pipelines.yml = azure-pipelines.yml
		Directory.Build.props = Directory.Build.props
		Directory.Packages.props = Directory.Packages.props
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "props", "props", "{40A43022-EBA7-4E1D-8BB0-2691E41B5622}"
	ProjectSection(SolutionItems) = preProject
		build\SignAssembly.props = build\SignAssembly.props
		build\SourceLink.props = build\SourceLink.props
		build\XUnit.props = build\XUnit.props
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget", "nuget", "{721A55B7-C5B0-44E2-803A-56E291C672FE}"
	ProjectSection(SolutionItems) = preProject
		NuGet.Config = NuGet.Config
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{8A0733E3-A184-4BD4-8CB7-478977F3F5FB}"
	ProjectSection(SolutionItems) = preProject
		LICENSE.TXT = LICENSE.TXT
		README.md = README.md
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "git", "git", "{0B395300-CACE-470D-81A9-69B922FB79DE}"
	ProjectSection(SolutionItems) = preProject
		.gitattributes = .gitattributes
		.gitignore = .gitignore
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "_build", "build\build\_build.csproj", "{005E7A00-4EA8-43F6-868E-1F8965D39CAA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragAndDropSample", "samples\DragAndDropSample\DragAndDropSample.csproj", "{438F2B54-FEDB-48C4-B14A-E47541DA443F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DraggableDemo", "samples\DraggableDemo\DraggableDemo.csproj", "{D5855901-BEEF-4179-96E8-9DD276C4DAEE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{9D4D9F1A-6EE5-4B7D-8991-0601F80F39CD}"
	ProjectSection(SolutionItems) = preProject
		.github\workflows\build.yml = .github\workflows\build.yml
	EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Xaml.Interactions.Responsive", "src\Avalonia.Xaml.Interactions.Responsive\Avalonia.Xaml.Interactions.Responsive.csproj", "{BEC165AA-392E-4193-A762-576A1EB8D40E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Xaml.Interactions.Draggable", "src\Avalonia.Xaml.Interactions.Draggable\Avalonia.Xaml.Interactions.Draggable.csproj", "{681EB965-E5B2-4A6F-9938-578FD19E8A15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Xaml.Interactions.DragAndDrop", "src\Avalonia.Xaml.Interactions.DragAndDrop\Avalonia.Xaml.Interactions.DragAndDrop.csproj", "{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Xaml.Interactions.Custom", "src\Avalonia.Xaml.Interactions.Custom\Avalonia.Xaml.Interactions.Custom.csproj", "{D647E09E-BBF2-4432-A4E0-80FBB921C1EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Xaml.Interactions.Events", "src\Avalonia.Xaml.Interactions.Events\Avalonia.Xaml.Interactions.Events.csproj", "{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{EA113F1A-D8D7-4142-9948-353270E7EBAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EA113F1A-D8D7-4142-9948-353270E7EBAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EA113F1A-D8D7-4142-9948-353270E7EBAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EA113F1A-D8D7-4142-9948-353270E7EBAE}.Release|Any CPU.Build.0 = Release|Any CPU
		{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E}.Release|Any CPU.Build.0 = Release|Any CPU
		{14006EB4-66E9-4B58-BF5F-5A1983BF4621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{14006EB4-66E9-4B58-BF5F-5A1983BF4621}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{14006EB4-66E9-4B58-BF5F-5A1983BF4621}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{14006EB4-66E9-4B58-BF5F-5A1983BF4621}.Release|Any CPU.Build.0 = Release|Any CPU
		{ED03EEAD-938F-447B-BF0B-30857AE78BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{ED03EEAD-938F-447B-BF0B-30857AE78BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{ED03EEAD-938F-447B-BF0B-30857AE78BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{ED03EEAD-938F-447B-BF0B-30857AE78BFF}.Release|Any CPU.Build.0 = Release|Any CPU
		{C2229490-39CA-4192-A28C-1B5EC186E027}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{C2229490-39CA-4192-A28C-1B5EC186E027}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{C2229490-39CA-4192-A28C-1B5EC186E027}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{C2229490-39CA-4192-A28C-1B5EC186E027}.Release|Any CPU.Build.0 = Release|Any CPU
		{80D2C64D-B560-475D-941F-D5F28DDB2591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{80D2C64D-B560-475D-941F-D5F28DDB2591}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{80D2C64D-B560-475D-941F-D5F28DDB2591}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{80D2C64D-B560-475D-941F-D5F28DDB2591}.Release|Any CPU.Build.0 = Release|Any CPU
		{005E7A00-4EA8-43F6-868E-1F8965D39CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{005E7A00-4EA8-43F6-868E-1F8965D39CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{005E7A00-4EA8-43F6-868E-1F8965D39CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{005E7A00-4EA8-43F6-868E-1F8965D39CAA}.Release|Any CPU.Build.0 = Release|Any CPU
		{438F2B54-FEDB-48C4-B14A-E47541DA443F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{438F2B54-FEDB-48C4-B14A-E47541DA443F}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{438F2B54-FEDB-48C4-B14A-E47541DA443F}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{438F2B54-FEDB-48C4-B14A-E47541DA443F}.Release|Any CPU.Build.0 = Release|Any CPU
		{D5855901-BEEF-4179-96E8-9DD276C4DAEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{D5855901-BEEF-4179-96E8-9DD276C4DAEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{D5855901-BEEF-4179-96E8-9DD276C4DAEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{D5855901-BEEF-4179-96E8-9DD276C4DAEE}.Release|Any CPU.Build.0 = Release|Any CPU
		{BEC165AA-392E-4193-A762-576A1EB8D40E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BEC165AA-392E-4193-A762-576A1EB8D40E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{BEC165AA-392E-4193-A762-576A1EB8D40E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{BEC165AA-392E-4193-A762-576A1EB8D40E}.Release|Any CPU.Build.0 = Release|Any CPU
		{681EB965-E5B2-4A6F-9938-578FD19E8A15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{681EB965-E5B2-4A6F-9938-578FD19E8A15}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{681EB965-E5B2-4A6F-9938-578FD19E8A15}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{681EB965-E5B2-4A6F-9938-578FD19E8A15}.Release|Any CPU.Build.0 = Release|Any CPU
		{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE}.Release|Any CPU.Build.0 = Release|Any CPU
		{D647E09E-BBF2-4432-A4E0-80FBB921C1EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{D647E09E-BBF2-4432-A4E0-80FBB921C1EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{D647E09E-BBF2-4432-A4E0-80FBB921C1EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{D647E09E-BBF2-4432-A4E0-80FBB921C1EE}.Release|Any CPU.Build.0 = Release|Any CPU
		{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{EA113F1A-D8D7-4142-9948-353270E7EBAE} = {9B9E3891-2366-4253-A952-D08BCEB71098}
		{2D9FCE6A-DF13-4037-BC33-7EDB06102A2E} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{14006EB4-66E9-4B58-BF5F-5A1983BF4621} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{ED03EEAD-938F-447B-BF0B-30857AE78BFF} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{C2229490-39CA-4192-A28C-1B5EC186E027} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
		{80D2C64D-B560-475D-941F-D5F28DDB2591} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
		{40A43022-EBA7-4E1D-8BB0-2691E41B5622} = {2913483A-3E55-44AE-86BB-88511F372191}
		{721A55B7-C5B0-44E2-803A-56E291C672FE} = {2913483A-3E55-44AE-86BB-88511F372191}
		{0B395300-CACE-470D-81A9-69B922FB79DE} = {2913483A-3E55-44AE-86BB-88511F372191}
		{005E7A00-4EA8-43F6-868E-1F8965D39CAA} = {2913483A-3E55-44AE-86BB-88511F372191}
		{438F2B54-FEDB-48C4-B14A-E47541DA443F} = {9B9E3891-2366-4253-A952-D08BCEB71098}
		{D5855901-BEEF-4179-96E8-9DD276C4DAEE} = {9B9E3891-2366-4253-A952-D08BCEB71098}
		{9D4D9F1A-6EE5-4B7D-8991-0601F80F39CD} = {2913483A-3E55-44AE-86BB-88511F372191}
		{BEC165AA-392E-4193-A762-576A1EB8D40E} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{681EB965-E5B2-4A6F-9938-578FD19E8A15} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{EF243B1A-FF29-41E9-B44B-2E55A73F6CCE} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{D647E09E-BBF2-4432-A4E0-80FBB921C1EE} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
		{648FFF6A-A8F5-491C-AC1C-19FC2061D6B4} = {84224365-32B6-46AF-85A2-45640E6D7EEB}
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {E64CD420-15B1-487C-9806-41EBE6DC15A4}
	EndGlobalSection
EndGlobal


================================================
FILE: Directory.Build.props
================================================
<Project>
  <PropertyGroup>
    <VersionPrefix>11.0.10.8</VersionPrefix>
    <VersionSuffix></VersionSuffix>
    <Authors>Wiesław Šoltés</Authors>
    <Company>Wiesław Šoltés</Company>
    <Copyright>Copyright © Wiesław Šoltés 2024</Copyright>
    <PackageLicenseExpression>MIT</PackageLicenseExpression>
    <PackageProjectUrl>https://github.com/wieslawsoltes/AvaloniaBehaviors</PackageProjectUrl>
  </PropertyGroup>
  <PropertyGroup>
    <AnalysisLevel>latest</AnalysisLevel>
    <LangVersion>latest</LangVersion>
    <EnableTrimAnalyzer>true</EnableTrimAnalyzer>
  </PropertyGroup>
</Project>


================================================
FILE: Directory.Packages.props
================================================
<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <AvaloniaVersion>11.0.0</AvaloniaVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Avalonia" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Desktop" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.ReactiveUI" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Browser" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Headless.XUnit" Version="$(AvaloniaVersion)" />
  </ItemGroup>
  <ItemGroup>
    <PackageVersion Include="System.Reactive" Version="6.0.0" />
    <PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.0.0" />
    <PackageVersion Include="Nuke.Common" Version="5.3.0" />
  </ItemGroup>
</Project>


================================================
FILE: LICENSE.TXT
================================================
The MIT License (MIT)

Copyright (c) Wiesław Šoltés

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: NuGet.Config
================================================
<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <packageSources>
    <clear />
    <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>


================================================
FILE: README.md
================================================
# Repository was moved!

New location is https://github.com/wieslawsoltes/Avalonia.Xaml.Behaviors

# Avalonia XAML Behaviors

[![Gitter](https://badges.gitter.im/wieslawsoltes/AvaloniaBehaviors.svg)](https://gitter.im/wieslawsoltes/AvaloniaBehaviors?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

[![Build Status](https://dev.azure.com/wieslawsoltes/GitHub/_apis/build/status/wieslawsoltes.AvaloniaBehaviors?repoName=wieslawsoltes%2FAvaloniaBehaviors&branchName=master)](https://dev.azure.com/wieslawsoltes/GitHub/_build/latest?definitionId=90&repoName=wieslawsoltes%2FAvaloniaBehaviors&branchName=master)
[![CI](https://github.com/wieslawsoltes/AvaloniaBehaviors/actions/workflows/build.yml/badge.svg)](https://github.com/wieslawsoltes/AvaloniaBehaviors/actions/workflows/build.yml)

[![NuGet](https://img.shields.io/nuget/v/Avalonia.Xaml.Behaviors.svg)](https://www.nuget.org/packages/Avalonia.Xaml.Behaviors)
[![NuGet](https://img.shields.io/nuget/dt/Avalonia.Xaml.Interactivity.svg)](https://www.nuget.org/packages/Avalonia.Xaml.Interactivity)
[![MyGet](https://img.shields.io/myget/xamlbehaviors-nightly/vpre/Avalonia.Xaml.Behaviors.svg?label=myget)](https://www.myget.org/gallery/xamlbehaviors-nightly) 

**AvaloniaBehaviors** is a port of [Windows UWP](https://github.com/Microsoft/XamlBehaviors) version of XAML Behaviors for [Avalonia](https://github.com/AvaloniaUI/Avalonia) XAML.

Avalonia XAML Behaviors is an easy-to-use means of adding common and reusable interactivity to your [Avalonia](https://github.com/AvaloniaUI/Avalonia) applications with minimal code. Avalonia port is available only for managed applications. Use of XAML Behaviors is governed by the MIT License. 

<a href='https://www.youtube.com/watch?v=pffBS-yQ_uM' target='_blank'>![](https://i.ytimg.com/vi/pffBS-yQ_uM/hqdefault.jpg)<a/>

## Building Avalonia XAML Behaviors

First, clone the repository or download the latest zip.
```
git clone https://github.com/wieslawsoltes/AvaloniaBehaviors.git
```

### Build on Windows using script

* [.NET Core](https://www.microsoft.com/net/download?initial-os=windows).

Open up a command-prompt and execute the commands:
```
.\build.ps1
```

### Build on Linux using script

* [.NET Core](https://www.microsoft.com/net/download?initial-os=linux).

Open up a terminal prompt and execute the commands:
```
./build.sh
```

### Build on OSX using script

* [.NET Core](https://www.microsoft.com/net/download?initial-os=macos).

Open up a terminal prompt and execute the commands:
```
./build.sh
```

## NuGet

Avalonia XamlBehaviors is delivered as a NuGet package.

You can find the packages here [NuGet](https://www.nuget.org/packages/Avalonia.Xaml.Behaviors/) and install the package like this:

`Install-Package Avalonia.Xaml.Behaviors`

or by using nightly build feed:
* Add `https://www.myget.org/F/xamlbehaviors-nightly/api/v2` to your package sources
* Alternative nightly build feed `https://pkgs.dev.azure.com/wieslawsoltes/GitHub/_packaging/Nightly/nuget/v3/index.json`
* Update your package using `XamlBehaviors` feed

and install the package like this:

`Install-Package Avalonia.Xaml.Behaviors -Pre`

### Package Sources

* https://api.nuget.org/v3/index.json
* https://www.myget.org/F/avalonia-ci/api/v2

## Resources

* [GitHub source code repository.](https://github.com/wieslawsoltes/AvaloniaBehaviors)

## License

Avalonia XAML Behaviors is licensed under the [MIT license](LICENSE.TXT).


================================================
FILE: _config.yml
================================================
theme: jekyll-theme-cayman

================================================
FILE: azure-pipelines.yml
================================================
name: $(date:yyyyMMdd)$(rev:-rr)

resources:
  repositories:
    - repository: templates
      endpoint: wieslawsoltes
      type: github
      name: wieslawsoltes/BuildTemplates
      ref: refs/tags/v2.0.0

variables:
  BuildConfiguration: 'Release'
  BuildPlatform: 'Any CPU'
  PublishFramework: 'net8.0'
  PublishProject: 'BehaviorsTestApplication'
  PublishRuntime: ''

jobs:
  - template: Test-PowerShell.yml@templates
    parameters:
      name: 'Test_Windows'
      vmImage: 'windows-2022'
      BuildConfiguration: ${{ variables.BuildConfiguration }}

  - template: Test-Bash.yml@templates
    parameters:
      name: 'Test_Linux'
      vmImage: 'ubuntu-20.04'
      BuildConfiguration: ${{ variables.BuildConfiguration }}

  - template: Test-Bash.yml@templates
    parameters:
      name: 'Test_macOS'
      vmImage: 'macOS-11'
      BuildConfiguration: ${{ variables.BuildConfiguration }}

  - template: Pack-MyGet.yml@templates
    parameters:
      name: 'Pack_MyGet'
      vmImage: 'windows-2022'
      BuildConfiguration: ${{ variables.BuildConfiguration }}

  - template: Pack-NuGet.yml@templates
    parameters:
      name: 'Pack_NuGet'
      vmImage: 'windows-2022'
      BuildConfiguration: ${{ variables.BuildConfiguration }}

  - template: Publish-PowerShell.yml@templates
    parameters:
      name: 'Publish_Windows'
      vmImage: 'windows-2022'
      BuildConfiguration: ${{ variables.BuildConfiguration }}
      PublishFramework: ${{ variables.PublishFramework }}
      PublishProject: ${{ variables.PublishProject }}
      PublishRuntime: 'win-x64'

  - template: Publish-Bash.yml@templates
    parameters:
      name: 'Publish_Linux'
      vmImage: 'ubuntu-20.04'
      BuildConfiguration: ${{ variables.BuildConfiguration }}
      PublishFramework: ${{ variables.PublishFramework }}
      PublishProject: ${{ variables.PublishProject }}
      PublishRuntime: 'linux-x64'

  - template: Publish-Bash.yml@templates
    parameters:
      name: 'Publish_macOS_x64'
      vmImage: 'macOS-11'
      BuildConfiguration: ${{ variables.BuildConfiguration }}
      PublishFramework: ${{ variables.PublishFramework }}
      PublishProject: ${{ variables.PublishProject }}
      PublishRuntime: 'osx-x64'

  - template: Publish-Bash.yml@templates
    parameters:
        name: 'Publish_macOS_arm64'
        vmImage: 'macOS-11'
        BuildConfiguration: ${{ variables.BuildConfiguration }}
        PublishFramework: ${{ variables.PublishFramework }}
        PublishProject: ${{ variables.PublishProject }}
        PublishRuntime: 'osx-arm64'


================================================
FILE: build/SignAssembly.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SignAssembly>True</SignAssembly>
    <AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)\behaviors.public.snk</AssemblyOriginatorKeyFile>
    <DelaySign>false</DelaySign>
    <PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
  </PropertyGroup>
</Project>


================================================
FILE: build/SourceLink.props
================================================
<Project>
  <PropertyGroup>
    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <IncludeSymbols>false</IncludeSymbols>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
    <DebugType>embedded</DebugType>
    <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
  </PropertyGroup>
  <PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  </PropertyGroup>
  <PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
    <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.SourceLink.GitHub" PrivateAssets="All"/>
  </ItemGroup>
  <ItemGroup>
    <SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageRoot)))" Condition="'$(NuGetPackageRoot)' != ''" />
  </ItemGroup>
</Project>


================================================
FILE: build/XUnit.props
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <PackageReference Include="xunit" />
    <PackageReference Include="xunit.abstractions" />
    <PackageReference Include="xunit.assert" />
    <PackageReference Include="xunit.core" />
    <PackageReference Include="xunit.extensibility.core" />
    <PackageReference Include="xunit.extensibility.execution" />
    <PackageReference Include="xunit.runner.console" />
    <PackageReference Include="xunit.runner.visualstudio" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" />
  </ItemGroup>
</Project>


================================================
FILE: build/build/Build.cs
================================================
using System.Collections.Generic;
using Nuke.Common;
using Nuke.Common.Git;
using Nuke.Common.ProjectModel;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.IO;
using static Nuke.Common.IO.FileSystemTasks;
using static Nuke.Common.IO.PathConstruction;
using static Nuke.Common.Tools.DotNet.DotNetTasks;

class Build : NukeBuild
{
    public static int Main() => Execute<Build>(x => x.Compile);

    [Solution]
    readonly Solution Solution;

    [GitRepository]
    readonly GitRepository GitRepository;

    [Parameter("configuration")]
    public string Configuration { get; set; }

    [Parameter("version-suffix")]
    public string VersionSuffix { get; set; }

    [Parameter("publish-framework")]
    public string PublishFramework { get; set; }

    [Parameter("publish-runtime")]
    public string PublishRuntime { get; set; }

    [Parameter("publish-project")]
    public string PublishProject { get; set; }

    [Parameter("publish-self-contained")]
    public bool PublishSelfContained { get; set; } = true;

    AbsolutePath SourceDirectory => RootDirectory / "src";

    AbsolutePath TestsDirectory => RootDirectory / "tests";

    AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";

    protected override void OnBuildInitialized()
    {
        Configuration = Configuration ?? "Release";
        VersionSuffix = VersionSuffix ?? "";
    }

    private void DeleteDirectories(IReadOnlyCollection<string> directories)
    {
        foreach (var directory in directories)
        {
            DeleteDirectory(directory);
        }
    }

    Target Clean => _ => _
        .Executes(() =>
        {
            DeleteDirectories(GlobDirectories(SourceDirectory, "**/bin", "**/obj"));
            DeleteDirectories(GlobDirectories(TestsDirectory, "**/bin", "**/obj"));
            EnsureCleanDirectory(ArtifactsDirectory);
        });

    Target Restore => _ => _
        .DependsOn(Clean)
        .Executes(() =>
        {
            DotNetRestore(s => s
                .SetProjectFile(Solution));
        });

    Target Compile => _ => _
        .DependsOn(Restore)
        .Executes(() =>
        {
            DotNetBuild(s => s
                .SetProjectFile(Solution)
                .SetConfiguration(Configuration)
                .SetVersionSuffix(VersionSuffix)
                .EnableNoRestore());
        });

    Target Test => _ => _
        .DependsOn(Compile)
        .Executes(() =>
        {
            DotNetTest(s => s
                .SetProjectFile(Solution)
                .SetConfiguration(Configuration)
                .SetLoggers("trx")
                .SetResultsDirectory(ArtifactsDirectory / "TestResults")
                .EnableNoBuild()
                .EnableNoRestore());
        });

    Target Pack => _ => _
        .DependsOn(Test)
        .Executes(() =>
        {
            DotNetPack(s => s
                .SetProject(Solution)
                .SetConfiguration(Configuration)
                .SetVersionSuffix(VersionSuffix)
                .SetOutputDirectory(ArtifactsDirectory / "NuGet")
                .EnableNoBuild()
                .EnableNoRestore());
        });

    Target Publish => _ => _
        .DependsOn(Test)
        .Requires(() => PublishRuntime)
        .Requires(() => PublishFramework)
        .Requires(() => PublishProject)
        .Executes(() =>
        {
            DotNetPublish(s => s
                .SetProject(Solution.GetProject(PublishProject))
                .SetConfiguration(Configuration)
                .SetVersionSuffix(VersionSuffix)
                .SetFramework(PublishFramework)
                .SetRuntime(PublishRuntime)
                .SetSelfContained(PublishSelfContained)
                .SetOutput(ArtifactsDirectory / "Publish" / PublishProject + "-" + PublishFramework + "-" + PublishRuntime));
        });
}


================================================
FILE: build/build/_build.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <IsPackable>False</IsPackable>
    <NoWarn>CS0649;CS0169</NoWarn>
    <NukeTelemetryVersion>1</NukeTelemetryVersion>
    <EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Nuke.Common" />
  </ItemGroup>

  <ItemGroup>
    <NukeMetadata Include="**\*.json" Exclude="bin\**;obj\**" />
    <NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
    <None Remove="*.ref;*.txt" />
  </ItemGroup>

</Project>


================================================
FILE: build.cmd
================================================
:; set -eo pipefail
:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
:; ${SCRIPT_DIR}/build.sh "$@"
:; exit $?

@ECHO OFF
powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*


================================================
FILE: build.ps1
================================================
[CmdletBinding()]
Param(
    [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
    [string[]]$BuildArguments
)

Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"

Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent

###########################################################################
# CONFIGURATION
###########################################################################

$BuildProjectFile = "$PSScriptRoot\build\build\_build.csproj"
$TempDirectory = "$PSScriptRoot\\.nuke\temp"

$DotNetGlobalFile = "$PSScriptRoot\\global.json"
$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
$DotNetChannel = "Current"

$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
$env:DOTNET_MULTILEVEL_LOOKUP = 0

###########################################################################
# EXECUTION
###########################################################################

function ExecSafe([scriptblock] $cmd) {
    & $cmd
    if ($LASTEXITCODE) { exit $LASTEXITCODE }
}

# If dotnet CLI is installed globally and it matches requested version, use for execution
if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
     $(dotnet --version) -and $LASTEXITCODE -eq 0) {
    $env:DOTNET_EXE = (Get-Command "dotnet").Path
}
else {
    # Download install script
    $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
    New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)

    # If global.json exists, load expected version
    if (Test-Path $DotNetGlobalFile) {
        $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
        if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
            $DotNetVersion = $DotNetGlobal.sdk.version
        }
    }

    # Install by channel or version
    $DotNetDirectory = "$TempDirectory\dotnet-win"
    if (!(Test-Path variable:DotNetVersion)) {
        ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
    } else {
        ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
    }
    $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
}

Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)"

ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }


================================================
FILE: build.sh
================================================
#!/usr/bin/env bash

bash --version 2>&1 | head -n 1

set -eo pipefail
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)

###########################################################################
# CONFIGURATION
###########################################################################

BUILD_PROJECT_FILE="$SCRIPT_DIR/build/build/_build.csproj"
TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"

DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
DOTNET_CHANNEL="Current"

export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_MULTILEVEL_LOOKUP=0

###########################################################################
# EXECUTION
###########################################################################

function FirstJsonValue {
    perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
}

# If dotnet CLI is installed globally and it matches requested version, use for execution
if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
    export DOTNET_EXE="$(command -v dotnet)"
else
    # Download install script
    DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
    mkdir -p "$TEMP_DIRECTORY"
    curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
    chmod +x "$DOTNET_INSTALL_FILE"

    # If global.json exists, load expected version
    if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
        DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
        if [[ "$DOTNET_VERSION" == ""  ]]; then
            unset DOTNET_VERSION
        fi
    fi

    # Install by channel or version
    DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
    if [[ -z ${DOTNET_VERSION+x} ]]; then
        "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
    else
        "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
    fi
    export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
fi

echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)"

"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"


================================================
FILE: global.json
================================================
{
  "sdk": {
    "version": "8.0.100",
    "rollForward": "latestMinor",
    "allowPrerelease": true
  }
}


================================================
FILE: samples/BehaviorsTestApplication/App.axaml
================================================
<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="BehaviorsTestApplication.App"
             Name="BehaviorsTestApplication"
             RequestedThemeVariant="Light">
    <Application.Resources>
        <SolidColorBrush x:Key="BlackBrush">Black</SolidColorBrush>
        <SolidColorBrush x:Key="WhiteBrush">White</SolidColorBrush>
        <SolidColorBrush x:Key="GrayBrush">Gray</SolidColorBrush>
        <SolidColorBrush x:Key="RedBrush">Red</SolidColorBrush>
        <SolidColorBrush x:Key="GreenBrush">Green</SolidColorBrush>
        <SolidColorBrush x:Key="BlueBrush">Blue</SolidColorBrush>
        <SolidColorBrush x:Key="YellowBrush">Yellow</SolidColorBrush>
        <SolidColorBrush x:Key="PinkBrush">Pink</SolidColorBrush>
    </Application.Resources>
    <Application.Styles>
        <FluentTheme/>
        <Style Selector="Button">
            <Setter Property="HorizontalAlignment" Value="Stretch"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalAlignment" Value="Stretch"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
        </Style>
        <StyleInclude Source="/SideBar.axaml"/>
    </Application.Styles>
</Application>


================================================
FILE: samples/BehaviorsTestApplication/App.axaml.cs
================================================
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using BehaviorsTestApplication.Views;

namespace BehaviorsTestApplication;

public class App : Application
{
    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
    }

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
        {
            desktopLifetime.MainWindow = new MainWindow();
        }
        else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime)
        {
            singleViewLifetime.MainView = new MainView();
        }
        base.OnFrameworkInitializationCompleted();
    }
}

================================================
FILE: samples/BehaviorsTestApplication/BehaviorsTestApplication.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <GenerateAssemblyInfo>False</GenerateAssemblyInfo>
    <IsPackable>False</IsPackable>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
    <PackageReference Include="Avalonia.Desktop" />
    <PackageReference Include="Avalonia.Diagnostics" />
    <PackageReference Include="Avalonia.Themes.Fluent" />
    <PackageReference Include="Avalonia.Fonts.Inter" />
    <PackageReference Include="Avalonia.ReactiveUI" />
  </ItemGroup>

  <!--<Import Project="..\..\build\SignAssembly.props" />-->

  <ItemGroup>
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions\Avalonia.Xaml.Interactions.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.Custom\Avalonia.Xaml.Interactions.Custom.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.DragAndDrop\Avalonia.Xaml.Interactions.DragAndDrop.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.Draggable\Avalonia.Xaml.Interactions.Draggable.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.Events\Avalonia.Xaml.Interactions.Events.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.Responsive\Avalonia.Xaml.Interactions.Responsive.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: samples/BehaviorsTestApplication/Converters/ClassesToStringConverter.cs
================================================
using System;
using System.Collections.Generic;
using System.Globalization;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Data.Converters;

namespace BehaviorsTestApplication.Converters;

public class ClassesToStringConverter : IMultiValueConverter
{
    public static ClassesToStringConverter Instance = new();

    public object Convert(IList<object?>? values, Type targetType, object? parameter, CultureInfo culture)
    {
        if (values?.Count == 2 && values[0] is int && values[1] is Classes classes)
        {
            return string.Join(" ", classes);
        }

        return AvaloniaProperty.UnsetValue;
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Program.cs
================================================
using System;
using Avalonia;
using Avalonia.ReactiveUI;
using Avalonia.Xaml.Interactions.Core;
using Avalonia.Xaml.Interactivity;

namespace BehaviorsTestApplication;

class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
    }

    public static AppBuilder BuildAvaloniaApp()
    {
        GC.KeepAlive(typeof(Interaction).Assembly);
        GC.KeepAlive(typeof(ComparisonConditionType).Assembly);
        return AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .UseReactiveUI()
            .LogToTrace();
    }
}


================================================
FILE: samples/BehaviorsTestApplication/SideBar.axaml
================================================
<Styles xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Design.PreviewWith>
        <Border Padding="20" Width="500" Height="400">
            <TabControl Classes="sidebar">
                <TabItem Header="Item1">
                  <Button Content="Button" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </TabItem>
                <TabItem Header="Item2">
                  <TextBlock Text="Text" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </TabItem>
            </TabControl> 
        </Border>
    </Design.PreviewWith>
    <Style Selector="TabControl.sidebar">
      <Setter Property="TabStripPlacement" Value="Left" />
      <Setter Property="Template">
          <ControlTemplate>
            <Border BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    CornerRadius="{TemplateBinding CornerRadius}"
                    Background="{TemplateBinding Background}"
                    HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                    VerticalAlignment="{TemplateBinding VerticalAlignment}">
              <DockPanel>
                <ScrollViewer>
                  <ItemsPresenter Name="PART_ItemsPresenter"
                                  ItemsPanel="{TemplateBinding ItemsPanel}"
                                  DockPanel.Dock="{TemplateBinding TabStripPlacement}"/>
                </ScrollViewer>
                <ContentPresenter Name="PART_SelectedContentHost"
                                  Margin="{TemplateBinding Padding}"
                                  HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                  VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                  Content="{TemplateBinding SelectedContent}"
                                  ContentTemplate="{TemplateBinding SelectedContentTemplate}" />
              </DockPanel>
            </Border>
          </ControlTemplate>
        </Setter>
    </Style>
</Styles>


================================================
FILE: samples/BehaviorsTestApplication/ViewModels/Core/ViewModelBase.cs
================================================
using ReactiveUI;

namespace BehaviorsTestApplication.ViewModels.Core;

public abstract class ViewModelBase : ReactiveObject
{
}

================================================
FILE: samples/BehaviorsTestApplication/ViewModels/ItemViewModel.cs
================================================
using System.Collections.ObjectModel;
using BehaviorsTestApplication.ViewModels.Core;
using ReactiveUI;

namespace BehaviorsTestApplication.ViewModels;

public class ItemViewModel(string name) : ViewModelBase
{
    private ObservableCollection<ItemViewModel>? _items;

    public string Name
    {
        get => name;
        set => this.RaiseAndSetIfChanged(ref name, value);
    }

    public ObservableCollection<ItemViewModel>? Items
    {
        get => _items;
        set => this.RaiseAndSetIfChanged(ref _items, value);
    }

    public override string ToString() => name;
}

================================================
FILE: samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs
================================================
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Reactive.Linq;
using System.Windows.Input;
using BehaviorsTestApplication.ViewModels.Core;
using ReactiveUI;

namespace BehaviorsTestApplication.ViewModels;

public class MainWindowViewModel : ViewModelBase
{
    private int _value;
    private int _count;
    private double _position;
    private ObservableCollection<ItemViewModel>? _items;

    public int Count
    {
        get => _count;
        set => this.RaiseAndSetIfChanged(ref _count, value);
    }

    public double Position
    {
        get => _position;
        set => this.RaiseAndSetIfChanged(ref _position, value);
    }

    public ObservableCollection<ItemViewModel>? Items
    {
        get => _items;
        set => this.RaiseAndSetIfChanged(ref _items, value);
    }

    public IObservable<int> Values { get; }

    public ICommand MoveLeftCommand { get; set; }

    public ICommand MoveRightCommand { get; set; }

    public ICommand ResetMoveCommand { get; set; }

    public MainWindowViewModel()
    {
        Count = 0;
        Position = 100.0;
        MoveLeftCommand = ReactiveCommand.Create(() => Position -= 5.0);
        MoveRightCommand = ReactiveCommand.Create(() => Position += 5.0);
        ResetMoveCommand = ReactiveCommand.Create(() => Position = 100.0);
        Items = new ObservableCollection<ItemViewModel>()
        {
            new("First Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("First Item Sub Item 1"),
                    new("First Item Sub Item 2"),
                    new("First Item Sub Item 3"),
                }
            },
            new("Second Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("Second Item Sub Item 1"),
                    new("Second Item Sub Item 2"),
                    new("Second Item Sub Item 3"),
                }
            },
            new("Third Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("Third Item Sub Item 1"),
                    new("Third Item Sub Item 2"),
                    new("Third Item Sub Item 3"),
                }
            },
            new("Fourth Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("Fourth Item Sub Item 1"),
                    new("Fourth Item Sub Item 2"),
                    new("Fourth Item Sub Item 3"),
                }
            },
            new("Fifth Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("Fifth Item Sub Item 1"),
                    new("Fifth Item Sub Item 2"),
                    new("Fifth Item Sub Item 3"),
                }
            },
            new("Sixth Item")
            {
                Items = new ObservableCollection<ItemViewModel>()
                {
                    new("Sixth Item Sub Item 1"),
                    new("Sixth Item Sub Item 2"),
                    new("Sixth Item Sub Item 3"),
                }
            },
        };

        Values = Observable.Interval(TimeSpan.FromSeconds(1)).Select(_ => _value++);
    }

    public void IncrementCount() => Count++;

    public void DecrementCount(object? sender, object parameter) => Count--;
}


================================================
FILE: samples/BehaviorsTestApplication/Views/ItemView.axaml
================================================
<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:ItemViewModel"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="BehaviorsTestApplication.Views.ItemView">
  <Panel Background="Transparent">
    <i:Interaction.Behaviors>
      <iac:ShowOnDoubleTappedBehavior TargetControl="TextBoxEdit" />
      <iac:ShowOnKeyDownBehavior TargetControl="TextBoxEdit" Key="F2" />
    </i:Interaction.Behaviors>
    <TextBox x:Name="TextBoxEdit"
             IsVisible="False"
             Height="{Binding #TextStackPanel.Bounds.Height}"
             VerticalContentAlignment="Center"
             VerticalAlignment="Center"
             Margin="0"
             Padding="6,0,6,0"
             BorderThickness="0"
             Text="{Binding Name, Mode=TwoWay}">
      <i:Interaction.Behaviors>
        <iac:HideOnKeyPressedBehavior TargetControl="TextBoxEdit" Key="Escape" />
        <iac:HideOnKeyPressedBehavior TargetControl="TextBoxEdit" Key="Enter" />
        <iac:HideOnLostFocusBehavior TargetControl="TextBoxEdit" />
        <iac:SelectAllOnGotFocusBehavior />
      </i:Interaction.Behaviors>
    </TextBox>
    <StackPanel x:Name="TextStackPanel"
                Orientation="Horizontal"
                Background="Transparent"
                Focusable="True"
                IsVisible="{Binding !#TextBoxEdit.IsVisible}">
      <TextBlock x:Name="StyleTextBlock"
                 Text="{Binding Name}"
                 Margin="6,8,6,8" />
    </StackPanel>
  </Panel>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/ItemView.axaml.cs
================================================
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views;

public partial class ItemView : UserControl
{
    public ItemView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/MainView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.MainView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:pages="using:BehaviorsTestApplication.Views.Pages"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="700"
             FontFamily="avares://Avalonia.Fonts.Inter/Assets#Inter">
  <UserControl.Styles>
    <Style Selector="TabItem">
      <Setter Property="FontSize" Value="16" />
    </Style>
  </UserControl.Styles>
  <TabControl Classes="sidebar">
    <TabItem Header="CallMethodAction">
      <pages:CallMethodActionView />
    </TabItem>
    <TabItem Header="ChangePropertyAction">
      <pages:ChangePropertyActionView />
    </TabItem>
    <TabItem Header="DataTriggerBehavior">
      <pages:DataTriggerBehaviorView />
    </TabItem>
    <TabItem Header="ValueChangedTriggerBehavior">
      <pages:ValueChangedTriggerBehaviorView />
    </TabItem>
    <TabItem Header="EventTriggerBehavior">
      <pages:EventTriggerBehaviorView />
    </TabItem>
    <TabItem Header="InvokeCommandAction">
      <pages:InvokeCommandActionView />
    </TabItem>
    <TabItem Header="RoutedEventTriggerBehavior">
      <pages:RoutedEventTriggerBehaviorView />
    </TabItem>
    <TabItem Header="ChangeAvaloniaPropertyAction">
      <pages:ChangeAvaloniaPropertyActionView />
    </TabItem>
    <TabItem Header="Custom Action">
      <pages:CustomActionView />
    </TabItem>
    <TabItem Header="Custom Behavior">
      <pages:CustomBehaviorView />
    </TabItem>
    <TabItem Header="ButtonClickEventTriggerBehavior">
      <pages:ButtonClickEventTriggerBehaviorView />
    </TabItem>
    <TabItem Header="Advanced Behavior">
      <pages:AdvancedView />
    </TabItem>
    <TabItem Header="Add/RemoveClassAction">
      <pages:AddRemoveClassActionView />
    </TabItem>
    <TabItem Header="AdaptiveBehavior">
      <pages:AdaptiveBehaviorView />
    </TabItem>
    <TabItem Header="EditableListBox">
      <pages:EditableListBoxView />
    </TabItem>
    <TabItem Header="EditableTree">
      <pages:EditableTreeViewView />
    </TabItem>
  </TabControl>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/MainView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views;

public partial class MainView : UserControl
{
    public MainView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/MainWindow.axaml
================================================
<Window x:Class="BehaviorsTestApplication.Views.MainWindow"
        xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:views="using:BehaviorsTestApplication.Views"
        Title="XamlBehaviors Test Application" Width="1000" Height="700">
  <views:MainView />
</Window>


================================================
FILE: samples/BehaviorsTestApplication/Views/MainWindow.axaml.cs
================================================
using BehaviorsTestApplication.ViewModels;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MainWindowViewModel();
        this.AttachDevTools();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AdaptiveBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.AdaptiveBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ir="clr-namespace:Avalonia.Xaml.Interactions.Responsive;assembly=Avalonia.Xaml.Interactions.Responsive"
             xmlns:converters="using:BehaviorsTestApplication.Converters"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>

  <UserControl.Styles>

    <!-- Adaptive SplitView -->

    <Style Selector="SplitView.adaptive">
      <Setter Property="PanePlacement" Value="Left" />
      <Setter Property="CompactPaneLength" Value="80" />
      <Setter Property="OpenPaneLength" Value="200" />
      <Setter Property="PaneBackground" Value="Transparent" />
      <Setter Property="IsPaneOpen" Value="False" />
      <Setter Property="DisplayMode" Value="Inline" />
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <ir:AdaptiveBehavior SourceControl="{Binding $parent[TopLevel]}">
              <ir:AdaptiveClassSetter MinWidth="0" MaxWidth="500" ClassName="small" />
              <ir:AdaptiveClassSetter MinWidth="500" MaxWidth="900" ClassName="medium" />
              <ir:AdaptiveClassSetter MinWidth="900" MaxWidth="Infinity" ClassName="wide" />
            </ir:AdaptiveBehavior>
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>
    <Style Selector="SplitView.small">
      <Setter Property="IsPaneOpen" Value="False" />
      <Setter Property="DisplayMode" Value="Inline" />
    </Style>
    <Style Selector="SplitView.medium">
      <Setter Property="IsPaneOpen" Value="False" />
      <Setter Property="DisplayMode" Value="CompactInline" />
    </Style>
    <Style Selector="SplitView.wide">
      <Setter Property="IsPaneOpen" Value="True" />
      <Setter Property="DisplayMode" Value="Inline" />
    </Style>

    <!-- Responsive StackPanel -->

    <Style Selector="StackPanel.responsive">
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <ir:AdaptiveBehavior SourceControl="{Binding $parent[TopLevel]}">
            <ir:AdaptiveClassSetter MinWidth="0" MinWidthOperator="GreaterThanOrEqual" MaxWidth="500" MaxWidthOperator="LessThan" ClassName="small" />
            <ir:AdaptiveClassSetter MinWidth="500" MinWidthOperator="GreaterThanOrEqual" MaxWidth="700" MaxWidthOperator="LessThan" ClassName="medium" />
            <ir:AdaptiveClassSetter MinWidth="700" MinWidthOperator="GreaterThanOrEqual" MaxWidth="900" MaxWidthOperator="LessThan" ClassName="large" />
            <ir:AdaptiveClassSetter MinWidth="900" MinWidthOperator="GreaterThanOrEqual" MaxWidth="Infinity" MaxWidthOperator="LessThan" ClassName="wide" />
            <ir:AdaptiveClassSetter MinHeight="0" MinWidthOperator="GreaterThanOrEqual" MaxHeight="600" MaxWidthOperator="LessThan" ClassName=":short" IsPseudoClass="True" />
            <ir:AdaptiveClassSetter MinHeight="600" MinWidthOperator="GreaterThanOrEqual" MaxHeight="Infinity" MaxWidthOperator="LessThan" ClassName=":tall" IsPseudoClass="True" />
            <ir:AdaptiveClassSetter MinWidth="1280" MinHeight="720" ClassName=":hd-ready" IsPseudoClass="True" />
            </ir:AdaptiveBehavior>
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>
    <Style Selector="StackPanel:short">
      <Setter Property="Background" Value="LightGray" />
    </Style>
    <Style Selector="StackPanel:tall">
      <Setter Property="Background" Value="DarkGray" />
    </Style>
    <Style Selector="StackPanel:pointerover:short">
      <Setter Property="Background" Value="Yellow" />
    </Style>
    <Style Selector="StackPanel:pointerover:tall">
      <Setter Property="Background" Value="Cyan" />
    </Style>
    <Style Selector="StackPanel">
      <Setter Property="Spacing" Value="0" />
      <Setter Property="(TextBlock.Foreground)" Value="Black" />
    </Style>
    <Style Selector="StackPanel.small">
      <Setter Property="Spacing" Value="10" />
      <Setter Property="(TextBlock.Foreground)" Value="Purple" />
    </Style>
    <Style Selector="StackPanel.medium">
      <Setter Property="Spacing" Value="20" />
      <Setter Property="(TextBlock.Foreground)" Value="Red" />
    </Style>
    <Style Selector="StackPanel.large">
      <Setter Property="Spacing" Value="30" />
      <Setter Property="(TextBlock.Foreground)" Value="Blue" />
    </Style>
    <Style Selector="StackPanel.wide">
      <Setter Property="Spacing" Value="40" />
      <Setter Property="(TextBlock.Foreground)" Value="Green" />
    </Style>

  </UserControl.Styles>

  <SplitView Classes="adaptive" Name="AdaptiveSplitView">

    <SplitView.Pane>
      <Border Margin="5" Background="Gray" />
    </SplitView.Pane>

    <DockPanel Background="{DynamicResource GrayBrush}" Margin="0,5,0,5">
      <StackPanel Orientation="Horizontal" Spacing="5" Margin="5" DockPanel.Dock="Bottom">
        <TextBlock Text="Width: " />
        <TextBlock Text="{Binding $parent[TopLevel].Bounds.Width}" />
        <TextBlock Text=" Height: " />
        <TextBlock Text="{Binding $parent[TopLevel].Bounds.Height}" />
        <TextBlock Text=" Classes: " />
        <TextBlock>
          <TextBlock.Text>
            <MultiBinding Converter="{x:Static converters:ClassesToStringConverter.Instance}">
              <Binding ElementName="ResponsiveStackPanel" Path="Classes.Count" />
              <Binding ElementName="ResponsiveStackPanel" Path="Classes" />
            </MultiBinding>
          </TextBlock.Text>
        </TextBlock>
      </StackPanel>
      <StackPanel Classes="responsive" Name="ResponsiveStackPanel" Margin="5">
        <TextBlock Text="Item1" />
        <TextBlock Text="Item2" />
        <TextBlock Text="Item3" />
        <TextBlock Text="Item4" />
        <TextBlock Text="Item5" />
        <TextBlock Text="Item7" />
        <TextBlock Text="Item8" />
      </StackPanel>
    </DockPanel>

  </SplitView>

</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AdaptiveBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class AdaptiveBehaviorView : UserControl
{
    public AdaptiveBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AddRemoveClassActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.AddRemoveClassActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid Background="{DynamicResource GrayBrush}" Margin="5">
    <StackPanel Name="ResponsiveStackPanel">
      <StackPanel.Styles>
        <Style Selector="StackPanel">
          <Setter Property="Spacing" Value="20" />
          <Setter Property="Orientation" Value="Horizontal" />
        </Style>
        <Style Selector="StackPanel.vertical">
          <Setter Property="Spacing" Value="10" />
          <Setter Property="Orientation" Value="Vertical" />
        </Style>
      </StackPanel.Styles>
      <i:Interaction.Behaviors>
        <ia:DataTriggerBehavior Binding="{Binding #ResponsiveStackPanel.Bounds.Width}" 
                                ComparisonCondition="LessThan"
                                Value="500">
          <iac:AddClassAction StyledElement="ResponsiveStackPanel" 
                              ClassName="vertical"
                              RemoveIfExists="True" />
        </ia:DataTriggerBehavior>
        <ia:DataTriggerBehavior Binding="{Binding #ResponsiveStackPanel.Bounds.Width}"
                                ComparisonCondition="GreaterThanOrEqual" Value="500">
          <iac:RemoveClassAction StyledElement="ResponsiveStackPanel"
                                 ClassName="vertical" />
        </ia:DataTriggerBehavior>
      </i:Interaction.Behaviors>
      <TextBlock Text="Item1" />
      <TextBlock Text="Item2" />
      <TextBlock Text="Item3" />
      <TextBlock Text="Item4" />
      <TextBlock Text="Item5" />
      <TextBlock Text="Item7" />
      <TextBlock Text="Item8" />
    </StackPanel>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AddRemoveClassActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class AddRemoveClassActionView : UserControl
{
    public AddRemoveClassActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AdvancedView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.AdvancedView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="Auto,*" ColumnDefinitions="*">
    <Border x:Name="Button" 
            Background="{DynamicResource GreenBrush}" 
            Width="100" Height="50" 
            Grid.Row="1" Grid.Column="0" 
            Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="PointerPressed" 
                                 SourceObject="Button">
          <ia:ChangePropertyAction TargetObject="Button" 
                                   PropertyName="Background"
                                   Value="{DynamicResource RedBrush}" />
          <ia:ChangePropertyAction TargetObject="Text" 
                                   PropertyName="Foreground"
                                   Value="{DynamicResource YellowBrush}" />
          <ia:CallMethodAction TargetObject="{Binding}" 
                               MethodName="IncrementCount" />
        </ia:EventTriggerBehavior>
        <ia:EventTriggerBehavior EventName="PointerReleased" 
                                 SourceObject="Button">
          <ia:ChangePropertyAction TargetObject="Button" 
                                   PropertyName="Background"
                                   Value="{DynamicResource GreenBrush}" />
          <ia:ChangePropertyAction TargetObject="Text" 
                                   PropertyName="Foreground"
                                   Value="{DynamicResource WhiteBrush}" />
          <ia:CallMethodAction TargetObject="{Binding}"
                               MethodName="DecrementCount" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
      <TextBlock x:Name="Text" 
                 Text="{Binding Count}" 
                 Foreground="{DynamicResource WhiteBrush}"
                 VerticalAlignment="Center" 
                 HorizontalAlignment="Center" />
    </Border>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/AdvancedView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class AdvancedView : UserControl
{
    public AdvancedView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ButtonClickEventTriggerBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.ButtonClickEventTriggerBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:ic="using:Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Grid RowDefinitions="*,Auto" ColumnDefinitions="30*,5,30*,5,30*">
    <Canvas Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" 
            Margin="5" 
            Background="{DynamicResource GrayBrush}">
      <Ellipse Canvas.Left="{Binding Position, Mode=TwoWay}" 
               Canvas.Top="200" 
               Fill="{DynamicResource RedBrush}"
               Stroke="{DynamicResource YellowBrush}" 
               StrokeThickness="5" 
               Height="100" Width="100" />
    </Canvas>
    <Button Content="Left (Hold Control), Reset (Hold Shift), Right (Hold Control+Shift)" 
            Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5" 
            Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <ic:ButtonClickEventTriggerBehavior KeyModifiers="Control">
          <ia:InvokeCommandAction Command="{Binding MoveLeftCommand}" />
        </ic:ButtonClickEventTriggerBehavior>
        <ic:ButtonClickEventTriggerBehavior KeyModifiers="Shift">
          <ia:InvokeCommandAction Command="{Binding ResetMoveCommand}" />
        </ic:ButtonClickEventTriggerBehavior>
        <ic:ButtonClickEventTriggerBehavior KeyModifiers="Control,Shift">
          <ia:InvokeCommandAction Command="{Binding MoveRightCommand}" />
        </ic:ButtonClickEventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ButtonClickEventTriggerBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class ButtonClickEventTriggerBehaviorView : UserControl
{
    public ButtonClickEventTriggerBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CallMethodActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.CallMethodActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="*,Auto" ColumnDefinitions="30*,5,30*,5,30*">
    <Border Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" 
            Margin="5"
            Background="{DynamicResource PinkBrush}" 
            BorderBrush="{DynamicResource GrayBrush}"
            BorderThickness="5">
      <TextBlock Text="{Binding Count}" 
                 FontSize="100" 
                 VerticalAlignment="Center" 
                 HorizontalAlignment="Center"
                 Foreground="{DynamicResource YellowBrush}" />
    </Border>
    <Button x:Name="DecrementButton" Content="Decrement" Grid.Row="1" Grid.Column="0" Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="DecrementButton">
          <ia:CallMethodAction TargetObject="{Binding}" MethodName="DecrementCount" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button Name="ResetButton" Content="Reset" Grid.Row="1" Grid.Column="2" Margin="0,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="ResetButton">
          <ia:ChangePropertyAction TargetObject="{Binding}" PropertyName="Count" Value="0" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button x:Name="IncrementButton" Content="Increment" Grid.Row="1" Grid.Column="4" Margin="0,0,5,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="IncrementButton">
          <ia:CallMethodAction TargetObject="{Binding}" MethodName="IncrementCount" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CallMethodActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class CallMethodActionView : UserControl
{
    public CallMethodActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ChangeAvaloniaPropertyActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.ChangeAvaloniaPropertyActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="*,Auto" ColumnDefinitions="50*,5,50*">
    <Rectangle Name="ChangePropertyRectangle" 
               Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" 
               Margin="5"
               Fill="{DynamicResource PinkBrush}" 
               Stroke="{DynamicResource GrayBrush}" 
               StrokeThickness="5" />
    <Button Name="PinkButton" Content="Pink" Grid.Row="1" Grid.Column="0" Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <iac:RoutedEventTriggerBehavior RoutedEvent="{x:Static Button.ClickEvent}"
                                        RoutingStrategies="Bubble"
                                        SourceInteractive="PinkButton">
          <iac:ChangeAvaloniaPropertyAction TargetObject="ChangePropertyRectangle" 
                                            TargetProperty="{x:Static Shape.FillProperty}"
                                            Value="{DynamicResource PinkBrush}" />
        </iac:RoutedEventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button Name="YellowButton" Content="Yellow" Grid.Row="1" Grid.Column="2" Margin="0,0,5,5">
      <i:Interaction.Behaviors>
        <iac:RoutedEventTriggerBehavior RoutedEvent="{x:Static Button.ClickEvent}"
                                        RoutingStrategies="Bubble"
                                        SourceInteractive="YellowButton">
          <iac:ChangeAvaloniaPropertyAction TargetObject="ChangePropertyRectangle" 
                                            TargetProperty="{x:Static Shape.FillProperty}"
                                            Value="{DynamicResource YellowBrush}" />
        </iac:RoutedEventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ChangeAvaloniaPropertyActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class ChangeAvaloniaPropertyActionView : UserControl
{
    public ChangeAvaloniaPropertyActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ChangePropertyActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.ChangePropertyActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="*,Auto" ColumnDefinitions="50*,5,50*">
    <Rectangle Name="ChangePropertyRectangle" 
               Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" 
               Margin="5"
               Fill="{DynamicResource PinkBrush}" 
               Stroke="{DynamicResource GrayBrush}" 
               StrokeThickness="5" />
    <Button Name="PinkButton" Content="Pink" Grid.Row="1" Grid.Column="0" Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="PinkButton">
          <ia:ChangePropertyAction TargetObject="ChangePropertyRectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource PinkBrush}" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button Name="YellowButton" Content="Yellow" Grid.Row="1" Grid.Column="2" Margin="0,0,5,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="YellowButton">
          <ia:ChangePropertyAction TargetObject="ChangePropertyRectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource YellowBrush}" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ChangePropertyActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class ChangePropertyActionView : UserControl
{
    public ChangePropertyActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CustomActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.CustomActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="Auto,*">
    <TextBlock Text="Move Pointer" 
               Name="Position"
               Grid.Row="0" 
               Margin="5" 
               Background="{DynamicResource GrayBrush}"
               Foreground="{DynamicResource YellowBrush}" 
               FontSize="14" 
               TextAlignment="Center"
               HorizontalAlignment="Stretch" 
               VerticalAlignment="Stretch" />
    <Border Name="Border" 
            Grid.Row="1" 
            Margin="5,0,5,5" 
            Background="{DynamicResource GrayBrush}"
            HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch">
      <i:Interaction.Behaviors>
        <iac:ShowPointerPositionBehavior TargetTextBlock="Position" />
        <ia:EventTriggerBehavior EventName="PointerPressed" SourceObject="Border">
          <iac:PopupAction>
            <Border DataContext="{Binding Count}" 
                    Width="300" Height="200" 
                    Background="Yellow" 
                    BorderBrush="Red"
                    BorderThickness="1" 
                    Padding="5">
              <StackPanel Orientation="Horizontal">
                <TextBlock Text="Count: " Foreground="Red" />
                <TextBlock Text="{Binding}" Foreground="Red" />
              </StackPanel>
            </Border>
          </iac:PopupAction>
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
      <TextBlock Text="Click Me" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20" />
    </Border>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CustomActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class CustomActionView : UserControl
{
    public CustomActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CustomBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.CustomBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <UserControl.Styles>
    <Style Selector="Canvas.drag > :is(Control)">
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <iac:DragControlBehavior />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>
  </UserControl.Styles>
  <DockPanel>
    <Canvas Classes="drag" Width="300" Height="300" Background="{DynamicResource GrayBrush}" Margin="5">
      <Rectangle Fill="Blue" Width="60" Height="40" Canvas.Left="20" Canvas.Top="100" />
      <Ellipse Fill="Red" Width="50" Height="50" Canvas.Left="120" Canvas.Top="30" />
      <TextBlock Text="Hello from Avalonia" Canvas.Left="40" Canvas.Top="200" />
      <Panel Background="Purple" Width="80" Height="70" Canvas.Left="200" Canvas.Top="150" />
    </Canvas>
    <Grid Background="{DynamicResource GrayBrush}" Margin="5">
      <Ellipse Fill="{DynamicResource RedBrush}" 
               Stroke="{DynamicResource BlackBrush}"
               Height="125" Width="125"
               StrokeThickness="0" 
               HorizontalAlignment="Left">
        <i:Interaction.Behaviors>
          <iac:DragControlBehavior />
        </i:Interaction.Behaviors>
      </Ellipse>
      <Ellipse Fill="{DynamicResource BlueBrush}" 
               Stroke="{DynamicResource BlackBrush}" 
               Height="125" Width="125"
               StrokeThickness="0" 
               HorizontalAlignment="Right">
        <i:Interaction.Behaviors>
          <iac:DragControlBehavior />
        </i:Interaction.Behaviors>
      </Ellipse>
    </Grid>
  </DockPanel>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/CustomBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class CustomBehaviorView : UserControl
{
    public CustomBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/DataTriggerBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.DataTriggerBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="*,Auto">
    <Rectangle Name="DataTriggerRectangle" 
               Grid.Row="0" Margin="5"
               Fill="{DynamicResource BlueBrush}"
               Stroke="{DynamicResource GrayBrush}"
               StrokeThickness="5">
      <i:Interaction.Behaviors>
        <ia:DataTriggerBehavior Binding="{Binding #Slider.Value}" 
                                ComparisonCondition="GreaterThan" 
                                Value="50">
          <ia:ChangePropertyAction TargetObject="DataTriggerRectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource YellowBrush}" />
        </ia:DataTriggerBehavior>
        <ia:DataTriggerBehavior Binding="{Binding #Slider.Value}" 
                                ComparisonCondition="LessThanOrEqual" 
                                Value="50">
          <ia:ChangePropertyAction TargetObject="DataTriggerRectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource BlueBrush}" />
        </ia:DataTriggerBehavior>
      </i:Interaction.Behaviors>
    </Rectangle>
    <StackPanel Grid.Row="1" 
                Margin="5,0,5,5" 
                Orientation="Horizontal"
                HorizontalAlignment="Center"
                VerticalAlignment="Center">
      <TextBlock Text="{Binding #Slider.Value}" 
                 VerticalAlignment="Center" 
                 Width="50"
                 Foreground="{DynamicResource GrayBrush}" />
      <Slider Name="Slider" Width="400" IsSnapToTickEnabled="True" TickFrequency="1" />
    </StackPanel>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/DataTriggerBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class DataTriggerBehaviorView : UserControl
{
    public DataTriggerBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EditableListBoxView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.EditableListBoxView"
             xmlns="https://github.com/avaloniaui"
             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:vm="using:BehaviorsTestApplication.ViewModels"
             xmlns:views="clr-namespace:BehaviorsTestApplication.Views"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <ListBox ItemsSource="{Binding Items}">
    <ListBox.Styles>
      <Style Selector="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        <Setter Property="Margin" Value="0" />
        <Setter Property="Padding" Value="0" />
      </Style>
    </ListBox.Styles>
    <ListBox.ItemTemplate>
      <DataTemplate DataType="vm:ItemViewModel" x:CompileBindings="False">
        <views:ItemView />
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EditableListBoxView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class EditableListBoxView : UserControl
{
    public EditableListBoxView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EditableTreeViewView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.EditableTreeViewView"
             xmlns="https://github.com/avaloniaui"
             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:vm="using:BehaviorsTestApplication.ViewModels"
             xmlns:views="clr-namespace:BehaviorsTestApplication.Views"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <TreeView ItemsSource="{Binding Items}">
    <TreeView.Styles>
      <Style Selector="TreeViewItem">
        <Setter Property="HorizontalAlignment" Value="Stretch" />
        <Setter Property="Margin" Value="0" />
        <Setter Property="Padding" Value="0" />
      </Style>
    </TreeView.Styles>
    <TreeView.ItemTemplate>
      <TreeDataTemplate DataType="vm:ItemViewModel" x:CompileBindings="False"
                        ItemsSource="{Binding Items}">
        <views:ItemView />
      </TreeDataTemplate>
    </TreeView.ItemTemplate>
  </TreeView>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EditableTreeViewView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class EditableTreeViewView : UserControl
{
    public EditableTreeViewView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EventTriggerBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.EventTriggerBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="Auto,Auto">
    <TextBox Name="TextBox" Text="Hello" Grid.Row="0" Margin="5" />
    <Button Name="ChangeProperty" Content="Change Property" Grid.Row="1" Margin="5,0,5,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="ChangeProperty">
          <ia:ChangePropertyAction TargetObject="TextBox" PropertyName="Text" Value="World" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/EventTriggerBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class EventTriggerBehaviorView : UserControl
{
    public EventTriggerBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/InvokeCommandActionView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.InvokeCommandActionView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             xmlns:reactive="using:System.Reactive"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="*,Auto" ColumnDefinitions="30*,5,30*,5,30*">
    <Canvas Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="5" Margin="5" Background="{DynamicResource GrayBrush}">
      <Ellipse Canvas.Left="{Binding Position, Mode=TwoWay}" 
               Canvas.Top="200" 
               Fill="{DynamicResource RedBrush}"
               Stroke="{DynamicResource YellowBrush}" 
               StrokeThickness="5" 
               Height="100" Width="100" />
    </Canvas>
    <Button x:Name="MoveLeftButton" Content="Move Left" Grid.Row="1" Grid.Column="0" Margin="5,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="MoveLeftButton">
          <ia:InvokeCommandAction Command="{Binding MoveLeftCommand}" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button x:Name="ResetMoveButton" Content="Reset Move" Grid.Row="1" Grid.Column="2" Margin="0,0,0,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="ResetMoveButton">
          <ia:InvokeCommandAction Command="{Binding ResetMoveCommand}"
                                  CommandParameter="{x:Static reactive:Unit.Default}"  />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Button x:Name="MoveRightButton" Content="Move Right" Grid.Row="1" Grid.Column="4" Margin="0,0,5,5">
      <i:Interaction.Behaviors>
        <ia:EventTriggerBehavior EventName="Click" SourceObject="MoveRightButton">
          <ia:InvokeCommandAction Command="{Binding MoveRightCommand}" />
        </ia:EventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/InvokeCommandActionView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class InvokeCommandActionView : UserControl
{
    public InvokeCommandActionView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/RoutedEventTriggerBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.RoutedEventTriggerBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid RowDefinitions="Auto,*,*">
    <TextBox Name="TextBox" Text="Hello" Grid.Row="0" Margin="5" />
    <Button Name="ChangeProperty" Content="Change Property" Grid.Row="1" Margin="5,0,5,5">
      <i:Interaction.Behaviors>
        <iac:RoutedEventTriggerBehavior RoutedEvent="{x:Static Button.ClickEvent}" 
                                        RoutingStrategies="Bubble"
                                        SourceInteractive="ChangeProperty">
          <ia:ChangePropertyAction TargetObject="TextBox" PropertyName="Text" Value="World" />
        </iac:RoutedEventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Button>
    <Rectangle Name="Rectangle" 
               Grid.Row="2" Margin="5"
               Fill="{DynamicResource BlueBrush}"
               Stroke="{DynamicResource GrayBrush}"
               StrokeThickness="5">
      <i:Interaction.Behaviors>
        <iac:RoutedEventTriggerBehavior RoutedEvent="{x:Static InputElement.PointerPressedEvent}" 
                                        RoutingStrategies="Tunnel">
          <ia:ChangePropertyAction TargetObject="Rectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource YellowBrush}" />
        </iac:RoutedEventTriggerBehavior>
        <iac:RoutedEventTriggerBehavior RoutedEvent="{x:Static InputElement.PointerReleasedEvent}" 
                                        RoutingStrategies="Tunnel">
          <ia:ChangePropertyAction TargetObject="Rectangle" 
                                   PropertyName="Fill"
                                   Value="{DynamicResource BlueBrush}" />
        </iac:RoutedEventTriggerBehavior>
      </i:Interaction.Behaviors>
    </Rectangle>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/RoutedEventTriggerBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class RoutedEventTriggerBehaviorView : UserControl
{
    public RoutedEventTriggerBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ValueChangedTriggerBehaviorView.axaml
================================================
<UserControl x:Class="BehaviorsTestApplication.Views.Pages.ValueChangedTriggerBehaviorView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
             xmlns:ia="clr-namespace:Avalonia.Xaml.Interactions.Core;assembly=Avalonia.Xaml.Interactions"
             xmlns:iac="clr-namespace:Avalonia.Xaml.Interactions.Custom;assembly=Avalonia.Xaml.Interactions.Custom"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="using:BehaviorsTestApplication.ViewModels"
             x:CompileBindings="True" x:DataType="vm:MainWindowViewModel"
             mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="450">
  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>
  <Grid>
    <TextBlock Name="Text" HorizontalAlignment="Center" VerticalAlignment="Center">
      <i:Interaction.Behaviors>
        <iac:ValueChangedTriggerBehavior Binding="{Binding Values^}">
          <ia:ChangePropertyAction TargetObject="Text" 
                                   PropertyName="Text"
                                   Value="{Binding Values^, StringFormat={} Value: {0}}" />
        </iac:ValueChangedTriggerBehavior>
      </i:Interaction.Behaviors>
    </TextBlock>
  </Grid>
</UserControl>


================================================
FILE: samples/BehaviorsTestApplication/Views/Pages/ValueChangedTriggerBehaviorView.axaml.cs
================================================
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace BehaviorsTestApplication.Views.Pages;

public partial class ValueChangedTriggerBehaviorView : UserControl
{
    public ValueChangedTriggerBehaviorView()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/Directory.Packages.props
================================================
<Project>
  <PropertyGroup>
    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
    <AvaloniaVersion>11.0.10</AvaloniaVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageVersion Include="Avalonia" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Controls.DataGrid" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Desktop" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.ReactiveUI" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Browser" Version="$(AvaloniaVersion)" />
    <PackageVersion Include="Avalonia.Headless.XUnit" Version="$(AvaloniaVersion)" />
  </ItemGroup>
  <ItemGroup>
    <PackageVersion Include="System.Reactive" Version="6.0.0" />
  </ItemGroup>
</Project>


================================================
FILE: samples/DragAndDropSample/App.axaml
================================================
<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="using:DragAndDropSample"
             x:Class="DragAndDropSample.App"
             Name="DragAndDropSample"
             RequestedThemeVariant="Light">
  <Application.DataTemplates>
    <local:ViewLocator />
  </Application.DataTemplates>

  <Application.Styles>
    <FluentTheme />
    <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Fluent.xaml"/>
  </Application.Styles>
</Application>


================================================
FILE: samples/DragAndDropSample/App.axaml.cs
================================================
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using DragAndDropSample.ViewModels;
using DragAndDropSample.Views;

namespace DragAndDropSample;

public class App : Application
{
    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
    }

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new MainWindow {DataContext = new MainWindowViewModel(),};
        }

        base.OnFrameworkInitializationCompleted();
    }
}

================================================
FILE: samples/DragAndDropSample/Behaviors/BaseDataGridDropHandler.cs
================================================
using System.Collections.ObjectModel;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.VisualTree;
using Avalonia.Xaml.Interactions.DragAndDrop;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample.Behaviors;

public abstract class BaseDataGridDropHandler<T> : DropHandlerBase
    where T : ViewModelBase
{
    private const string rowDraggingUpStyleClass = "DraggingUp";
    private const string rowDraggingDownStyleClass = "DraggingDown";

    protected abstract T MakeCopy(ObservableCollection<T> parentCollection, T item);

    protected abstract bool Validate(DataGrid dg, DragEventArgs e, object? sourceContext, object? targetContext, bool bExecute);

    public override bool Validate(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control c && sender is DataGrid dg)
        {
            bool valid = Validate(dg, e, sourceContext, targetContext, false);
            if (valid)
            {
                var row = FindDataGridRowFromChildView(c);
                string direction = e.Data.Contains("direction") ? (string) e.Data.Get("direction")! : "down";
                ApplyDraggingStyleToRow(row!, direction);
                ClearDraggingStyleFromAllRows(sender, exceptThis: row);
            }
            return valid;
        }
        ClearDraggingStyleFromAllRows(sender);
        return false;
    }

    public override bool Execute(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        ClearDraggingStyleFromAllRows(sender);
        if (e.Source is Control && sender is DataGrid dg)
        {
            return Validate(dg, e, sourceContext, targetContext, true);
        }
        return false;
    }

    public override void Cancel(object? sender, RoutedEventArgs e)
    {
        base.Cancel(sender, e);
        // this is necessary to clear adorner borders when mouse leaves DataGrid
        // they would remain even after changing screens
        ClearDraggingStyleFromAllRows(sender);
    }

    protected bool RunDropAction(DataGrid dg, DragEventArgs e, bool bExecute, T sourceItem, T targetItem, ObservableCollection<T> items)
    {
        int sourceIndex = items.IndexOf(sourceItem);
        int targetIndex = items.IndexOf(targetItem);

        if (sourceIndex < 0 || targetIndex < 0)
        {
            return false;
        }

        switch (e.DragEffects)
        {
            case DragDropEffects.Copy:
            {
                if (bExecute)
                {
                    var clone = MakeCopy(items, sourceItem);
                    InsertItem(items, clone, targetIndex + 1);
                    dg.SelectedIndex = targetIndex + 1;
                }
                return true;
            }
            case DragDropEffects.Move:
            {
                if (bExecute)
                {
                    MoveItem(items, sourceIndex, targetIndex);
                    dg.SelectedIndex = targetIndex;
                }
                return true;
            }
            case DragDropEffects.Link:
            {
                if (bExecute)
                {
                    SwapItem(items, sourceIndex, targetIndex);
                    dg.SelectedIndex = targetIndex;
                }
                return true;
            }
            default:
                return false;
        }
    }

    private static DataGridRow? FindDataGridRowFromChildView(StyledElement sourceChild)
    {
        int maxDepth = 16;
        DataGridRow? row = null;
        StyledElement? current = sourceChild;
        while (maxDepth --> 0 || row is null)
        {
            if (current is DataGridRow dgr)
                row = dgr;

            current = current?.Parent;
        }
        return row;
    }

    private static DataGridRowsPresenter? GetRowsPresenter(Visual v)
    {
        foreach (var cv in v.GetVisualChildren())
        {
            if (cv is DataGridRowsPresenter dgrp)
                return dgrp;
            else if (GetRowsPresenter(cv) is DataGridRowsPresenter dgrp2)
                return dgrp2;                
        }
        return null;
    }

    private static void ClearDraggingStyleFromAllRows(object? sender, DataGridRow? exceptThis = null)
    {
        if (sender is DataGrid dg)
        {
            var presenter = GetRowsPresenter(dg);
            if (presenter is null) return;

            foreach (var r in presenter.Children)
            {
                if (r == exceptThis) continue;

                if (r!.Classes.Contains(rowDraggingUpStyleClass))
                {
                    r?.Classes?.Remove(rowDraggingUpStyleClass);
                }
                if (r!.Classes.Contains(rowDraggingDownStyleClass))
                {
                    r?.Classes?.Remove(rowDraggingDownStyleClass);
                }
            }
        }
    }

    private static void ApplyDraggingStyleToRow(DataGridRow row, string direction)
    {
        if (direction == "up")
        {
            if (row.Classes.Contains(rowDraggingDownStyleClass) == true)
            {
                row.Classes.Remove(rowDraggingDownStyleClass);
            }
            if (row.Classes.Contains(rowDraggingUpStyleClass) == false)
            {
                row.Classes.Add(rowDraggingUpStyleClass);
            }
        }
        else if (direction == "down")
        {
            if (row.Classes.Contains(rowDraggingUpStyleClass) == true)
            {
                row.Classes.Remove(rowDraggingUpStyleClass);
            }
            if (row.Classes.Contains(rowDraggingDownStyleClass) == false)
            {
                row.Classes.Add(rowDraggingDownStyleClass);
            }
        }
    }
}

================================================
FILE: samples/DragAndDropSample/Behaviors/ContextDragWithDirectionBehavior.cs
================================================
using System;
using System.Threading.Tasks;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Xaml.Interactions.DragAndDrop;
using Avalonia.Xaml.Interactivity;

namespace DragAndDropSample.Behaviors;

/// <summary>
/// 
/// </summary>
public sealed class ContextDragWithDirectionBehavior : Behavior<Control>
{
    private Point _dragStartPoint;
    private PointerEventArgs? _triggerEvent;
    private bool _lock;
    private bool _captured;

    /// <summary>
    /// 
    /// </summary>
    public static readonly StyledProperty<object?> ContextProperty =
        AvaloniaProperty.Register<ContextDragBehavior, object?>(nameof(Context));

    /// <summary>
    /// 
    /// </summary>
    public static readonly StyledProperty<IDragHandler?> HandlerProperty =
        AvaloniaProperty.Register<ContextDragBehavior, IDragHandler?>(nameof(Handler));

    /// <summary>
    /// 
    /// </summary>
    public static readonly StyledProperty<double> HorizontalDragThresholdProperty = 
        AvaloniaProperty.Register<ContextDragBehavior, double>(nameof(HorizontalDragThreshold), 3);

    /// <summary>
    /// 
    /// </summary>
    public static readonly StyledProperty<double> VerticalDragThresholdProperty =
        AvaloniaProperty.Register<ContextDragBehavior, double>(nameof(VerticalDragThreshold), 3);

    /// <summary>
    /// 
    /// </summary>
    public object? Context
    {
        get => GetValue(ContextProperty);
        set => SetValue(ContextProperty, value);
    }

    /// <summary>
    /// 
    /// </summary>
    public IDragHandler? Handler
    {
        get => GetValue(HandlerProperty);
        set => SetValue(HandlerProperty, value);
    }

    /// <summary>
    /// 
    /// </summary>
    public double HorizontalDragThreshold
    {
        get => GetValue(HorizontalDragThresholdProperty);
        set => SetValue(HorizontalDragThresholdProperty, value);
    }

    /// <summary>
    /// 
    /// </summary>
    public double VerticalDragThreshold
    {
        get => GetValue(VerticalDragThresholdProperty);
        set => SetValue(VerticalDragThresholdProperty, value);
    }

    /// <inheritdoc />
    protected override void OnAttachedToVisualTree()
    {
        AssociatedObject?.AddHandler(InputElement.PointerPressedEvent, AssociatedObject_PointerPressed, RoutingStrategies.Direct | RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
        AssociatedObject?.AddHandler(InputElement.PointerReleasedEvent, AssociatedObject_PointerReleased, RoutingStrategies.Direct | RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
        AssociatedObject?.AddHandler(InputElement.PointerMovedEvent, AssociatedObject_PointerMoved, RoutingStrategies.Direct | RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
        AssociatedObject?.AddHandler(InputElement.PointerCaptureLostEvent, AssociatedObject_CaptureLost, RoutingStrategies.Direct | RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
    }

    /// <inheritdoc />
    protected override void OnDetachedFromVisualTree()
    {
        AssociatedObject?.RemoveHandler(InputElement.PointerPressedEvent, AssociatedObject_PointerPressed);
        AssociatedObject?.RemoveHandler(InputElement.PointerReleasedEvent, AssociatedObject_PointerReleased);
        AssociatedObject?.RemoveHandler(InputElement.PointerMovedEvent, AssociatedObject_PointerMoved);
        AssociatedObject?.RemoveHandler(InputElement.PointerCaptureLostEvent, AssociatedObject_CaptureLost);
    }

    private async Task DoDragDrop(PointerEventArgs triggerEvent, object? value, string upOrDown)
    {
        var data = new DataObject();
        data.Set(ContextDropBehavior.DataFormat, value!);
        data.Set("direction", upOrDown);

        var effect = DragDropEffects.None;

        if (triggerEvent.KeyModifiers.HasFlag(KeyModifiers.Alt))
        {
            effect |= DragDropEffects.Link;
        }
        else if (triggerEvent.KeyModifiers.HasFlag(KeyModifiers.Shift))
        {
            effect |= DragDropEffects.Move;
        }
        else if (triggerEvent.KeyModifiers.HasFlag(KeyModifiers.Control))
        {
            effect |= DragDropEffects.Copy;
        }
        else
        {
            effect |= DragDropEffects.Move;
        }

        await DragDrop.DoDragDrop(triggerEvent, data, effect);
    }

    private void Released()
    {
        _triggerEvent = null;
        _lock = false;
    }

    private void AssociatedObject_PointerPressed(object? sender, PointerPressedEventArgs e)
    {
        var properties = e.GetCurrentPoint(AssociatedObject).Properties;
        if (properties.IsLeftButtonPressed)
        {
            if (e.Source is Control control
                && AssociatedObject?.DataContext == control.DataContext)
            {
                _dragStartPoint = e.GetPosition(null);
                _triggerEvent = e;
                _lock = true;
                _captured = true;
            }
        }
    }

    private void AssociatedObject_PointerReleased(object? sender, PointerReleasedEventArgs e)
    {
        if (_captured)
        {
            if (e.InitialPressMouseButton == MouseButton.Left && _triggerEvent is { })
            {
                Released();
            }

            _captured = false;
        }
    }

    private async void AssociatedObject_PointerMoved(object? sender, PointerEventArgs e)
    {
        var properties = e.GetCurrentPoint(AssociatedObject).Properties;
        if (_captured
            && properties.IsLeftButtonPressed &&
            _triggerEvent is { })
        {
            var point = e.GetPosition(null);
            var diff = _dragStartPoint - point;
            var horizontalDragThreshold = HorizontalDragThreshold;
            var verticalDragThreshold = VerticalDragThreshold;

            if (Math.Abs(diff.X) > horizontalDragThreshold || Math.Abs(diff.Y) > verticalDragThreshold)
            {
                if (_lock)
                {
                    _lock = false;
                }
                else
                {
                    return;
                }

                var context = Context ?? AssociatedObject?.DataContext;
                    
                Handler?.BeforeDragDrop(sender, _triggerEvent, context);

                await DoDragDrop(_triggerEvent, context, diff.Y > 0 ? "up" : "down");

                Handler?.AfterDragDrop(sender, _triggerEvent, context);

                _triggerEvent = null;
            }
        }
    }

    private void AssociatedObject_CaptureLost(object? sender, PointerCaptureLostEventArgs e)
    {
        Released();
        _captured = false;
    }
}


================================================
FILE: samples/DragAndDropSample/Behaviors/ItemsDataGridDropHandler.cs
================================================
using System.Collections.ObjectModel;
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.VisualTree;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample.Behaviors;

public sealed class ItemsDataGridDropHandler : BaseDataGridDropHandler<ItemViewModel>
{
    protected override ItemViewModel MakeCopy(ObservableCollection<ItemViewModel> parentCollection, ItemViewModel item) =>
        new() { Title = item.Title };

    protected override bool Validate(DataGrid dg, DragEventArgs e, object? sourceContext, object? targetContext, bool bExecute)
    {
        if (sourceContext is not ItemViewModel sourceItem
         || targetContext is not MainWindowViewModel vm
         || dg.GetVisualAt(e.GetPosition(dg)) is not Control targetControl
         || targetControl.DataContext is not ItemViewModel targetItem)
        {
            return false;
        }

        var items = vm.Items;
        return RunDropAction(dg, e, bExecute, sourceItem, targetItem, items);
    }
}

================================================
FILE: samples/DragAndDropSample/Behaviors/ItemsListBoxDropHandler.cs
================================================
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.VisualTree;
using Avalonia.Xaml.Interactions.DragAndDrop;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample.Behaviors;

public class ItemsListBoxDropHandler : DropHandlerBase
{
    private bool Validate<T>(ListBox listBox, DragEventArgs e, object? sourceContext, object? targetContext, bool bExecute) where T : ItemViewModel
    {
        if (sourceContext is not T sourceItem
            || targetContext is not MainWindowViewModel vm
            || listBox.GetVisualAt(e.GetPosition(listBox)) is not Control targetControl
            || targetControl.DataContext is not T targetItem)
        {
            return false;
        }

        var items = vm.Items;
        var sourceIndex = items.IndexOf(sourceItem);
        var targetIndex = items.IndexOf(targetItem);

        if (sourceIndex < 0 || targetIndex < 0)
        {
            return false;
        }

        switch (e.DragEffects)
        {
            case DragDropEffects.Copy:
            {
                if (bExecute)
                {
                    var clone = new ItemViewModel() { Title = sourceItem.Title + "_copy" };
                    InsertItem(items, clone, targetIndex + 1);
                }
                return true;
            }
            case DragDropEffects.Move:
            {
                if (bExecute)
                {
                    MoveItem(items, sourceIndex, targetIndex);
                }
                return true;
            }
            case DragDropEffects.Link:
            {
                if (bExecute)
                {
                    SwapItem(items, sourceIndex, targetIndex);
                }
                return true;
            }
            default:
                return false;
        }
    }
        
    public override bool Validate(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is ListBox listBox)
        {
            return Validate<ItemViewModel>(listBox, e, sourceContext, targetContext, false);
        }
        return false;
    }

    public override bool Execute(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is ListBox listBox)
        {
            return Validate<ItemViewModel>(listBox, e, sourceContext, targetContext, true);
        }
        return false;
    }
}


================================================
FILE: samples/DragAndDropSample/Behaviors/NodesListBoxDropHandler.cs
================================================
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.VisualTree;
using Avalonia.Xaml.Interactions.DragAndDrop;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample.Behaviors;

public class NodesListBoxDropHandler : DropHandlerBase
{
    private bool Validate<T>(ListBox listBox, DragEventArgs e, object? sourceContext, object? targetContext, bool bExecute) where T : NodeViewModel
    {
        if (sourceContext is not T sourceNode
            || targetContext is not MainWindowViewModel vm
            || listBox.GetVisualAt(e.GetPosition(listBox)) is not Control targetControl
            || targetControl.DataContext is not T targetNode)
        {
            return false;
        }

        var nodes = vm.Nodes;
        var sourceIndex = nodes.IndexOf(sourceNode);
        var targetIndex = nodes.IndexOf(targetNode);

        if (sourceIndex < 0 || targetIndex < 0)
        {
            return false;
        }

        switch (e.DragEffects)
        {
            case DragDropEffects.Copy:
            {
                if (bExecute)
                {
                    var clone = new NodeViewModel() { Title = sourceNode.Title + "_copy" };
                    InsertItem(nodes, clone, targetIndex + 1);
                }
                return true;
            }
            case DragDropEffects.Move:
            {
                if (bExecute)
                {
                    MoveItem(nodes, sourceIndex, targetIndex);
                }
                return true;
            }
            case DragDropEffects.Link:
            {
                if (bExecute)
                {
                    SwapItem(nodes, sourceIndex, targetIndex);
                }
                return true;
            }
            default:
                return false;
        }
    }
        
    public override bool Validate(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is ListBox listBox)
        {
            return Validate<NodeViewModel>(listBox, e, sourceContext, targetContext, false);
        }
        return false;
    }

    public override bool Execute(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is ListBox listBox)
        {
            return Validate<NodeViewModel>(listBox, e, sourceContext, targetContext, true);
        }
        return false;
    }
}


================================================
FILE: samples/DragAndDropSample/Behaviors/NodesTreeViewDropHandler.cs
================================================
using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.VisualTree;
using Avalonia.Xaml.Interactions.DragAndDrop;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample.Behaviors;

public class NodesTreeViewDropHandler : DropHandlerBase
{
    private bool Validate<T>(TreeView treeView, DragEventArgs e, object? sourceContext, object? targetContext, bool bExecute) where T : NodeViewModel
    {
        if (sourceContext is not T sourceNode
            || targetContext is not MainWindowViewModel vm
            || treeView.GetVisualAt(e.GetPosition(treeView)) is not Control targetControl
            || targetControl.DataContext is not T targetNode)
        {
            return false;
        }

        var sourceParent = sourceNode.Parent;
        var targetParent = targetNode.Parent;
        var sourceNodes = sourceParent is not null ? sourceParent.Nodes : vm.Nodes;
        var targetNodes = targetParent is not null ? targetParent.Nodes : vm.Nodes;

        if (sourceNodes is not null && targetNodes is not null)
        {
            var sourceIndex = sourceNodes.IndexOf(sourceNode);
            var targetIndex = targetNodes.IndexOf(targetNode);

            if (sourceIndex < 0 || targetIndex < 0)
            {
                return false;
            }

            switch (e.DragEffects)
            {
                case DragDropEffects.Copy:
                {
                    if (bExecute)
                    {
                        var clone = new NodeViewModel() { Title = sourceNode.Title + "_copy" };
                        InsertItem(targetNodes, clone, targetIndex + 1);
                    }

                    return true;
                }
                case DragDropEffects.Move:
                {
                    if (bExecute)
                    {
                        if (sourceNodes == targetNodes)
                        {
                            MoveItem(sourceNodes, sourceIndex, targetIndex);
                        }
                        else
                        {
                            sourceNode.Parent = targetParent;

                            MoveItem(sourceNodes, targetNodes, sourceIndex, targetIndex);
                        }
                    }

                    return true;
                }
                case DragDropEffects.Link:
                {
                    if (bExecute)
                    {
                        if (sourceNodes == targetNodes)
                        {
                            SwapItem(sourceNodes, sourceIndex, targetIndex);
                        }
                        else
                        {
                            sourceNode.Parent = targetParent;
                            targetNode.Parent = sourceParent;

                            SwapItem(sourceNodes, targetNodes, sourceIndex, targetIndex);
                        }
                    }

                    return true;
                }
            }
        }

        return false;
    }
        
    public override bool Validate(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is TreeView treeView)
        {
            return Validate<NodeViewModel>(treeView, e, sourceContext, targetContext, false);
        }
        return false;
    }

    public override bool Execute(object? sender, DragEventArgs e, object? sourceContext, object? targetContext, object? state)
    {
        if (e.Source is Control && sender is TreeView treeView)
        {
            return Validate<NodeViewModel>(treeView, e, sourceContext, targetContext, true);
        }
        return false;
    }
}


================================================
FILE: samples/DragAndDropSample/DragAndDropSample.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <GenerateAssemblyInfo>False</GenerateAssemblyInfo>
    <IsPackable>False</IsPackable>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <AvaloniaResource Include="Assets\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
    <PackageReference Include="Avalonia.Controls.DataGrid" />
    <PackageReference Include="Avalonia.Desktop" />
    <PackageReference Include="Avalonia.Diagnostics" />
    <PackageReference Include="Avalonia.Themes.Fluent" />
    <PackageReference Include="Avalonia.Fonts.Inter" />
    <PackageReference Include="Avalonia.ReactiveUI" />
  </ItemGroup>

  <!--<Import Project="..\..\build\SignAssembly.props" />-->

  <ItemGroup>
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions\Avalonia.Xaml.Interactions.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.DragAndDrop\Avalonia.Xaml.Interactions.DragAndDrop.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: samples/DragAndDropSample/Program.cs
================================================
using System;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.ReactiveUI;
using Avalonia.Xaml.Interactions.Core;
using Avalonia.Xaml.Interactivity;

namespace DragAndDropSample;

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()
    {
        GC.KeepAlive(typeof(Interaction).Assembly);
        GC.KeepAlive(typeof(ComparisonConditionType).Assembly);
        return AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .LogToTrace()
            .UseReactiveUI();
    }
}


================================================
FILE: samples/DragAndDropSample/ViewLocator.cs
================================================
using System;
using Avalonia.Controls;
using Avalonia.Controls.Templates;
using DragAndDropSample.ViewModels;

namespace DragAndDropSample;

public class ViewLocator : IDataTemplate
{
    public Control Build(object? data)
    {
        var name = data?.GetType().FullName?.Replace("ViewModel", "View");
        var type = name is null ? null : Type.GetType(name);

        if (type != null)
        {
            return (Control)Activator.CreateInstance(type)!;
        }
        else
        {
            return new TextBlock {Text = "Not Found: " + name};
        }
    }

    public bool Match(object? data)
    {
        return data is ViewModelBase;
    }
}


================================================
FILE: samples/DragAndDropSample/ViewModels/ItemViewModel.cs
================================================
using ReactiveUI;

namespace DragAndDropSample.ViewModels;

public class ItemViewModel : ViewModelBase
{
    private string? _title;

    public string? Title
    {
        get => _title;
        set => this.RaiseAndSetIfChanged(ref _title, value);
    }

    public override string? ToString() => _title;
}

================================================
FILE: samples/DragAndDropSample/ViewModels/MainWindowViewModel.cs
================================================
using System.Collections.ObjectModel;
using ReactiveUI;

namespace DragAndDropSample.ViewModels;

public class MainWindowViewModel : ViewModelBase
{
    private ObservableCollection<ItemViewModel> _items;
    private ObservableCollection<NodeViewModel> _nodes;
        
    public ObservableCollection<ItemViewModel> Items
    {
        get => _items;
        set => this.RaiseAndSetIfChanged(ref _items, value);
    }

    public ObservableCollection<NodeViewModel> Nodes
    {
        get => _nodes;
        set => this.RaiseAndSetIfChanged(ref _nodes, value);
    }

    public MainWindowViewModel()
    {
        _items = new ObservableCollection<ItemViewModel>()
        {
            new() { Title = "Item0" },
            new() { Title = "Item1" },
            new() { Title = "Item2" },
            new() { Title = "Item3" },
            new() { Title = "Item4" }
        };

        var node0 = new NodeViewModel()
        {
            Title = "Node0"
        };
        node0.Nodes = new ObservableCollection<NodeViewModel>()
        {
            new() { Title = "Node0-0", Parent = node0},
            new() { Title = "Node0-1", Parent = node0},
            new() { Title = "Node0-2", Parent = node0},
        }; 

        var node1 = new NodeViewModel()
        {
            Title = "Node1"
        };
        node1.Nodes = new ObservableCollection<NodeViewModel>()
        {
            new() { Title = "Node1-0", Parent = node1},
            new() { Title = "Node1-1", Parent = node1},
            new() { Title = "Node1-2", Parent = node1},
        }; 

        var node2 = new NodeViewModel()
        {
            Title = "Node2"
        };
        node2.Nodes = new ObservableCollection<NodeViewModel>()
        {
            new() { Title = "Node2-0", Parent = node2},
            new() { Title = "Node2-1", Parent = node2},
            new() { Title = "Node2-2", Parent = node2},
        }; 

        _nodes = new ObservableCollection<NodeViewModel>()
        {
            node0,
            node1,
            node2
        };
    }
}

================================================
FILE: samples/DragAndDropSample/ViewModels/NodeViewModel.cs
================================================
using System.Collections.ObjectModel;
using ReactiveUI;

namespace DragAndDropSample.ViewModels;

public class NodeViewModel : ViewModelBase
{
    private string? _title;
    private NodeViewModel? _parent;
    private ObservableCollection<NodeViewModel>? _nodes;

    public string? Title
    {
        get => _title;
        set => this.RaiseAndSetIfChanged(ref _title, value);
    }

    public NodeViewModel? Parent
    {
        get => _parent;
        set => this.RaiseAndSetIfChanged(ref _parent, value);
    }

    public ObservableCollection<NodeViewModel>? Nodes
    {
        get => _nodes;
        set => this.RaiseAndSetIfChanged(ref _nodes, value);
    }

    public override string? ToString() => _title;
}

================================================
FILE: samples/DragAndDropSample/ViewModels/ViewModelBase.cs
================================================
using ReactiveUI;

namespace DragAndDropSample.ViewModels;

public class ViewModelBase : ReactiveObject
{
}

================================================
FILE: samples/DragAndDropSample/Views/MainWindow.axaml
================================================
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:DragAndDropSample.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
        xmlns:idd="clr-namespace:Avalonia.Xaml.Interactions.DragAndDrop;assembly=Avalonia.Xaml.Interactions.DragAndDrop"
        xmlns:b="using:DragAndDropSample.Behaviors"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignWidth="650" d:DesignHeight="450"
        x:Class="DragAndDropSample.Views.MainWindow"
        Icon="/Assets/avalonia-logo.ico"
        Width="650" WindowStartupLocation="CenterScreen"
        Title="DragAndDropSample">

  <Design.DataContext>
    <vm:MainWindowViewModel />
  </Design.DataContext>

  <Window.Resources>
    <!-- IconGrabber, MIT License, author: Primer, taken from: https://www.svgrepo.com/svg/347759/grabber -->
    <PathGeometry x:Key="IconGrabberGeometry">M15 18a1 1 0 100-2 1 1 0 000 2zm1-6a1 1 0 11-2 0 1 1 0 012 0zm-7 6a1 1 0 100-2 1 1 0 000 2zm0-5a1 1 0 100-2 1 1 0 000 2zm7-6a1 1 0 11-2 0 1 1 0 012 0zM9 8a1 1 0 100-2 1 1 0 000 2z</PathGeometry>
    <GeometryDrawing x:Key="IconGrabber" Brush="Black" Geometry="{StaticResource IconGrabberGeometry}" />
  </Window.Resources>

  <Window.Styles>

    <Style Selector="ListBox.ItemsDragAndDrop">
      <Style.Resources>
        <b:ItemsListBoxDropHandler x:Key="ItemsListBoxDropHandler" />
      </Style.Resources>
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDropBehavior Handler="{StaticResource ItemsListBoxDropHandler}" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="ListBox.ItemsDragAndDrop ListBoxItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDragBehavior HorizontalDragThreshold="3" VerticalDragThreshold="3" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="ListBox.NodesDragAndDrop">
      <Style.Resources>
        <b:NodesListBoxDropHandler x:Key="NodesListBoxDropHandler" />
      </Style.Resources>
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDropBehavior Handler="{StaticResource NodesListBoxDropHandler}" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="ListBox.NodesDragAndDrop ListBoxItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDragBehavior />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="TreeView.NodesDragAndDrop">
      <Style.Resources>
        <b:NodesTreeViewDropHandler x:Key="NodesTreeViewDropHandler" />
      </Style.Resources>
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDropBehavior Handler="{StaticResource NodesTreeViewDropHandler}" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="TreeView.NodesDragAndDrop TreeViewItem">
      <Setter Property="IsExpanded" Value="True" />
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDragBehavior />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="DataGrid.DragAndDrop">
      <Style.Resources>
        <b:ItemsDataGridDropHandler x:Key="ItemsDataGridDropHandler" />
      </Style.Resources>
      <Setter
        Property="RowHeaderWidth"
        Value="24" />
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDropBehavior Handler="{StaticResource ItemsDataGridDropHandler}" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>

    <Style Selector="DataGrid.DragAndDrop DataGridRow.DraggingUp">
      <Setter Property="AdornerLayer.Adorner">
        <Template>
          <Border BorderThickness="0 2 0 0" BorderBrush="{DynamicResource SystemAccentColor}"/>
        </Template>
      </Setter>
    </Style>
  
    <Style Selector="DataGrid.DragAndDrop DataGridRow.DraggingDown">
      <Setter Property="AdornerLayer.Adorner">
        <Template>
          <Border BorderThickness="0 0 0 2" BorderBrush="{DynamicResource SystemAccentColor}"/>
        </Template>
      </Setter>
    </Style>
  
    <!-- This makes only the DataGridRowHeader available for dragging, instead of making the entire row draggable -->
    <!-- Which prevents a conflict between text selection in a cell and drag-and-drop -->
    <Style Selector="DataGrid.DragAndDrop DataGridRowHeader">
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <b:ContextDragWithDirectionBehavior HorizontalDragThreshold="3" VerticalDragThreshold="3" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
      <Setter Property="Content">
        <Template>
          <Image
            Margin="12,0,12,0"
            Width="12"
            Height="12"
            VerticalAlignment="Center"
            HorizontalAlignment="Center">
            <Image.Source>
              <!-- Use your own image here, I used this: https://www.svgrepo.com/svg/347759/grabber -->
              <DrawingImage Drawing="{StaticResource IconGrabber}" />
            </Image.Source>
          </Image>
        </Template>
      </Setter>
    </Style>

    <Style Selector="DataGrid.ItemsDragAndDrop">
      <Style.Resources>
        <b:ItemsDataGridDropHandler x:Key="ItemsDataGridDropHandler" />
      </Style.Resources>
      <Setter Property="(i:Interaction.Behaviors)">
        <i:BehaviorCollectionTemplate>
          <i:BehaviorCollection>
            <idd:ContextDropBehavior Handler="{StaticResource ItemsDataGridDropHandler}" />
          </i:BehaviorCollection>
        </i:BehaviorCollectionTemplate>
      </Setter>
    </Style>
    
  </Window.Styles>

  <TabControl>

    <TabItem Header="TreeView">
      <Grid ColumnDefinitions="*,8,*">
        <TreeView ItemsSource="{Binding Nodes}"
                  Classes="NodesDragAndDrop"
                  Grid.Column="0">
          <TreeView.ItemTemplate>
            <TreeDataTemplate DataType="vm:NodeViewModel" ItemsSource="{Binding Nodes}">
              <TextBlock Text="{Binding Title}" />
            </TreeDataTemplate>
          </TreeView.ItemTemplate>
        </TreeView>
        <GridSplitter Width="8" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext" Background="Transparent" Grid.Column="1"/>
        <ListBox ItemsSource="{Binding Nodes}"
                 Classes="NodesDragAndDrop"
                 Grid.Column="2">
          <ListBox.ItemTemplate>
            <DataTemplate DataType="vm:NodeViewModel">
              <TextBlock Text="{Binding Title}" />
            </DataTemplate>
          </ListBox.ItemTemplate>
        </ListBox>
      </Grid>
    </TabItem>

    <TabItem Header="ListBox">
      <ListBox ItemsSource="{Binding Items}"
               Classes="ItemsDragAndDrop">
        <ListBox.ItemTemplate>
          <DataTemplate DataType="vm:ItemViewModel">
            <TextBlock Text="{Binding Title}" />
          </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>
    </TabItem>

    <TabItem Header="DataGrid">
      <Grid>
        <DataGrid
          AutoGenerateColumns="False"
          ItemsSource="{Binding Items}"
          CanUserResizeColumns="True"
          HeadersVisibility="All"
          Classes="DragAndDrop ItemsDragAndDrop">
          <DataGrid.Columns>
            <DataGridTextColumn
              Width="*"
              Binding="{Binding Title}">
            <DataGridTextColumn.Header>
              <TextBlock Text="Title"/>
            </DataGridTextColumn.Header>
          </DataGridTextColumn>
          </DataGrid.Columns>
        </DataGrid>
      </Grid>
    </TabItem>

  </TabControl>

</Window>


================================================
FILE: samples/DragAndDropSample/Views/MainWindow.axaml.cs
================================================
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;

namespace DragAndDropSample.Views;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
#if DEBUG
        this.AttachDevTools();
#endif
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/DraggableDemo/App.axaml
================================================
<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="DraggableDemo.App"
             Name="DraggableDemo"
             RequestedThemeVariant="Light">
  <Application.Styles>
    <FluentTheme />
  </Application.Styles>
</Application>


================================================
FILE: samples/DraggableDemo/App.axaml.cs
================================================
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;

namespace DraggableDemo;

public class App : Application
{
    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
    }

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new MainWindow();
        }

        base.OnFrameworkInitializationCompleted();
    }
}

================================================
FILE: samples/DraggableDemo/DraggableDemo.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <GenerateAssemblyInfo>False</GenerateAssemblyInfo>
    <IsPackable>False</IsPackable>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <AvaloniaResource Include="Assets\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
    <PackageReference Include="Avalonia.Desktop" />
    <PackageReference Include="Avalonia.Diagnostics" />
    <PackageReference Include="Avalonia.Themes.Fluent" />
    <PackageReference Include="Avalonia.Fonts.Inter" />
    <PackageReference Include="Avalonia.ReactiveUI" />
  </ItemGroup>

  <!--<Import Project="..\..\build\SignAssembly.props" />-->

  <ItemGroup>
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions\Avalonia.Xaml.Interactions.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactions.Draggable\Avalonia.Xaml.Interactions.Draggable.csproj" />
    <ProjectReference Include="..\..\src\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: samples/DraggableDemo/MainWindow.axaml
================================================
<Window xmlns="https://github.com/avaloniaui"
        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:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity"
        xmlns:id="clr-namespace:Avalonia.Xaml.Interactions.Draggable;assembly=Avalonia.Xaml.Interactions.Draggable"
        xmlns:local="clr-namespace:DraggableDemo"
        xmlns:models="clr-namespace:DraggableDemo.Models"
        mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="550"
        x:Class="DraggableDemo.MainWindow"
        x:CompileBindings="True" x:DataType="local:MainWindow"
        WindowState="Normal" WindowStartupLocation="CenterScreen"
        Width="1200" Height="550"
        Title="Draggable Controls Demo">

  <Window.Styles>
    <StyleInclude Source="avares://Avalonia.Xaml.Interactions.Draggable/Styles.axaml" />
    <StyleInclude Source="/Styles/Custom.axaml" />
    <Style Selector="TextBlock">
      <Setter Property="HorizontalAlignment" Value="Center" />
      <Setter Property="VerticalAlignment" Value="Center" />
      <Setter Property="ClipToBounds" Value="False" />
    </Style>
  </Window.Styles>

  <TabControl Classes="draggable">

    <TabItem Header="TabControl">
      <TabControl Classes="draggable custom" Background="LightGray">
        <TabControl.Styles>
          <Style Selector="TabItem:not(:dragging)">
            <Setter Property="Transitions">
              <Setter.Value>
                  <Transitions>
                    <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.1" />
                  </Transitions>
              </Setter.Value>
            </Setter>
          </Style>
        </TabControl.Styles>
        <TabItem Header="Tab1">
          <TextBlock Text="Tab1" />
        </TabItem>
        <TabItem Header="Tab2">
          <TextBlock Text="Tab2" />
        </TabItem>
        <TabItem Header="Tab3">
          <TextBlock Text="Tab3" />
        </TabItem>
      </TabControl>
    </TabItem>

    <TabItem Header="TabControl (Items)">
      <TabControl Classes="draggableVirtualizing custom" ItemsSource="{Binding Items}" Background="LightGray" >
        <TabControl.Styles>
          <Style Selector="TabItem:not(:dragging)">
            <Setter Property="Transitions">
              <Setter.Value>
                <Transitions>
                  <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.1" />
                </Transitions>
              </Setter.Value>
            </Setter>
          </Style>
        </TabControl.Styles>
      </TabControl>
    </TabItem>

    <TabItem Header="ListBox">
      <ListBox Classes="draggable">
        <ListBox.Styles>
          <Style Selector="ListBoxItem > TextBlock">
            <Setter Property="HorizontalAlignment" Value="Left" />
          </Style>
          <Style Selector="ListBoxItem:not(:dragging)">
            <Setter Property="Transitions">
              <Setter.Value>
                <Transitions>
                  <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.1" />
                </Transitions>
              </Setter.Value>
            </Setter>
          </Style>
        </ListBox.Styles>
        <ListBoxItem>
          <TextBlock Text="Item1" />
        </ListBoxItem>
        <ListBoxItem>
          <TextBlock Text="Item2" />
        </ListBoxItem>
        <ListBoxItem>
          <TextBlock Text="Item3" />
        </ListBoxItem>
      </ListBox>
    </TabItem>

    <TabItem Header="ListBox (Items)">
      <ListBox Classes="draggableVirtualizing" ItemsSource="{Binding Strings}">
        <ListBox.Styles>
          <Style Selector="ListBoxItem > TextBlock">
            <Setter Property="HorizontalAlignment" Value="Left" />
          </Style>
          <Style Selector="ListBoxItem:not(:dragging)">
            <Setter Property="Transitions">
              <Setter.Value>
                <Transitions>
                  <TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.1" />
                </Transitions>
              </Setter.Value>
            </Setter>
          </Style>
        </ListBox.Styles>
      </ListBox>
    </TabItem>

    <TabItem Header="Canvas">
      <Canvas Classes="draggable" Width="500" Height="300" Background="LightGray">
        <Canvas.Styles>
          <Style Selector="Canvas > :is(Control):dragging">
            <Setter Property="ZIndex" Value="1" />
          </Style>
        </Canvas.Styles>
        <Rectangle Fill="Blue" Width="60" Height="40" Canvas.Left="20" Canvas.Top="10" />
        <Ellipse Fill="Red" Width="50" Height="50" Canvas.Left="120" Canvas.Top="30" />
        <TextBlock Text="Hello from Avalonia" Background="Transparent" Canvas.Left="40" Canvas.Top="100" />
        <Panel Background="Purple" Width="80" Height="70" Canvas.Left="250" Canvas.Top="100" />
      </Canvas>
    </TabItem>

    <TabItem Header="Canvas (Items)">
      <ItemsControl Classes="draggable" ItemsSource="{Binding Items}" Width="500" Height="300" Background="LightGray">
        <ItemsControl.Styles>
          <Style Selector="ItemsControl > ContentPresenter" x:DataType="models:Item">
            <Setter Property="(Canvas.Left)" Value="{Binding X}" />
            <Setter Property="(Canvas.Top)" Value="{Binding Y}" />
          </Style>
          <Style Selector="ItemsControl > ContentPresenter:dragging">
            <Setter Property="Opacity" Value="0.5" />
            <Setter Property="ZIndex" Value="1" />
          </Style>
        </ItemsControl.Styles>
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <Canvas />
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.DataTemplates>
          <DataTemplate DataType="models:Item">
            <Rectangle Fill="Black" Width="30" Height="30" />
          </DataTemplate>
        </ItemsControl.DataTemplates>
      </ItemsControl>
    </TabItem>

    <TabItem Header="Grid">
      <Grid Classes="draggable" ColumnDefinitions="*,*,*" RowDefinitions="*,*,*" ShowGridLines="True" Width="500" Height="300" Background="LightGray">
        <Grid.Styles>
          <Style Selector="Grid > :is(Control):dragging">
            <Setter Property="Opacity" Value="0.5" />
            <Setter Property="ZIndex" Value="1" />
          </Style>
        </Grid.Styles>
        <Rectangle Fill="Blue" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" />
        <Ellipse Fill="Red" Grid.Column="2" Grid.Row="0" />
        <TextBlock Text="Hello from Avalonia" Background="Transparent" Grid.Column="0" Grid.Row="1" />
        <Panel Background="Purple" Grid.Column="1" Grid.Row="1" Grid.RowSpan="2" />
        <Ellipse Fill="Cyan" Grid.Column="2" Grid.Row="2" />
      </Grid>
    </TabItem>

    <TabItem Header="Grid (Items)">
      <ItemsControl ItemsSource="{Binding Tiles}" Width="800" Height="300" Background="LightGray">
        <ItemsControl.Styles>
          <Style Selector=":is(ItemsControl) > :is(ContentPresenter)">
            <Setter Property="(i:Interaction.Behaviors)">
              <i:BehaviorCollectionTemplate>
                <i:BehaviorCollection>
                  <id:GridDragBehavior CopyColumn="True" CopyRow="True" CopyColumnSpan="True" CopyRowSpan="True" />
                </i:BehaviorCollection>
              </i:BehaviorCollectionTemplate>
            </Setter>
          </Style>
          <Style Selector="ItemsControl > ContentPresenter" x:DataType="models:Tile">
            <Setter Property="(Grid.Column)" Value="{Binding Column}" />
            <Setter Property="(Grid.Row)" Value="{Binding Row}" />
            <Setter Property="(Grid.ColumnSpan)" Value="{Binding ColumnSpan}" />
            <Setter Property="(Grid.RowSpan)" Value="{Binding RowSpan}" />
          </Style>
          <Style Selector="ItemsControl > ContentPresenter:dragging">
            <Setter Property="Opacity" Value="0.5" />
            <Setter Property="ZIndex" Value="1" />
          </Style>
        </ItemsControl.Styles>
        <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
            <Grid ShowGridLines="True" ColumnDefinitions="*,*,*" RowDefinitions="*,*" />
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.DataTemplates>
          <DataTemplate DataType="models:Tile">
            <Border Background="{Binding Background}" CornerRadius="6" Margin="6" BorderBrush="Gray" BorderThickness="2">
              <Label Content="{Binding Title}" HorizontalAlignment="Center" VerticalAlignment="Center" />
            </Border>
          </DataTemplate>
        </ItemsControl.DataTemplates>
      </ItemsControl>
    </TabItem>

  </TabControl>

</Window>


================================================
FILE: samples/DraggableDemo/MainWindow.axaml.cs
================================================
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using DraggableDemo.Models;

namespace DraggableDemo;

public partial class MainWindow : Window
{
    public IList<Item> Items { get; set; }

    public IList<string> Strings { get; }

    public IList<Tile> Tiles { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        Items = new ObservableCollection<Item>()
        {
            new () { Title = "Item1", X = 30, Y = 30 },
            new () { Title = "Item2", X = 90, Y = 30 },
            new () { Title = "Item3", X = 120, Y = 60 },
            new () { Title = "Item4", X = 45, Y = 90 },
            new () { Title = "Item5", X = 60, Y = 120 },
            new () { Title = "Item6", X = 150, Y = 180 },
            new () { Title = "Item7", X = 250, Y = 120 },
            new () { Title = "Item8", X = 300, Y = 150 }
        };

        Strings = new ObservableCollection<string>();

        for (var i = 0; i < 1_000; i++)
        {
            Strings.Add($"Item {i+1} / {1000}");
        }

        Tiles = new ObservableCollection<Tile>()
        {
            new () { Title = "Tile1", Column = 0, Row = 0, ColumnSpan = 1, RowSpan = 1, Background = "Red" },
            new () { Title = "Tile2", Column = 0, Row = 1, ColumnSpan = 1, RowSpan = 1, Background = "Green" },
            new () { Title = "Tile3", Column = 1, Row = 0, ColumnSpan = 1, RowSpan = 2, Background = "Blue" },
            new () { Title = "Tile4", Column = 2, Row = 0, ColumnSpan = 1, RowSpan = 2, Background = "Cyan" },
        };

        DataContext = this;
#if DEBUG
        this.AttachDevTools();
#endif
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
    }
}


================================================
FILE: samples/DraggableDemo/Models/Item.cs
================================================
namespace DraggableDemo.Models;

public class Item
{
    public string? Title { get; set; }

    public double X { get; set; }

    public double Y { get; set; }

    public override string? ToString() => Title;
}

================================================
FILE: samples/DraggableDemo/Models/Tile.cs
================================================
namespace DraggableDemo.Models;

public class Tile
{
    public string? Title { get; set; }

    public int Column { get; set; }

    public int Row { get; set; }

    public int ColumnSpan { get; set; }

    public int RowSpan { get; set; }

    public string? Background { get; set; }

    public override string? ToString() => Title;
}

================================================
FILE: samples/DraggableDemo/Program.cs
================================================
using System;
using Avalonia;
using Avalonia.Xaml.Interactions.Core;
using Avalonia.Xaml.Interactivity;

namespace DraggableDemo;

class Program
{
    public static void Main(string[] args) => BuildAvaloniaApp()
        .StartWithClassicDesktopLifetime(args);

    public static AppBuilder BuildAvaloniaApp()
    {
        GC.KeepAlive(typeof(Interaction).Assembly);
        GC.KeepAlive(typeof(ComparisonConditionType).Assembly);
        return AppBuilder.Configure<App>()
            .UsePlatformDetect()
            .LogToTrace();
    }
}


================================================
FILE: samples/DraggableDemo/Styles/Custom.axaml
================================================
<Styles xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <Styles.Resources>
    <Thickness x:Key="TabControlTopPlacementItemMargin">0 0 0 2</Thickness>
  </Styles.Resources>

  <!-- TabControl Custom Styles -->

  <Style Selector=":is(TabControl).custom">
    <Setter Property="Margin" Value="0" />
    <Setter Property="Padding" Value="{DynamicResource TabItemMargin}" />
    <Setter Property="Background" Value="{DynamicResource TabControlBackground}" />
    <Setter Property="Template">
      <ControlTemplate>
        <Border Margin="{TemplateBinding Margin}"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                Background="{TemplateBinding Background}"
                HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                VerticalAlignment="{TemplateBinding VerticalAlignment}">
          <DockPanel>
            <Border Name="PART_ItemsPresenterBorder"
                    DockPanel.Dock="{TemplateBinding TabStripPlacement}">
              <ItemsPresenter Name="PART_ItemsPresenter"
                              ItemsPanel="{TemplateBinding ItemsPanel}"/>
            </Border>
            <ContentPresenter Name="PART_SelectedContentHost"
                              Margin="{TemplateBinding Padding}"
                              HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                              VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                              Content="{TemplateBinding SelectedContent}"
                              ContentTemplate="{TemplateBinding SelectedContentTemplate}" />
          </DockPanel>
        </Border>
      </ControlTemplate>
    </Setter>
  </Style>

  <Style
    Selector=":is(TabControl)[TabStripPlacement=Left].custom /template/ ItemsPresenter#PART_ItemsPresenter > WrapPanel">
    <Setter Property="Orientation" Value="Vertical" />
  </Style>

  <Style
    Selector=":is(TabControl)[TabStripPlacement=Right].custom /template/ ItemsPresenter#PART_ItemsPresenter > WrapPanel">
    <Setter Property="Orientation" Value="Vertical" />
  </Style>

  <Style Selector=":is(TabControl)[TabStripPlacement=Top].custom /template/ ItemsPresenter#PART_ItemsPresenter">
    <Setter Property="Margin" Value="{DynamicResource TabControlTopPlacementItemMargin}" />
  </Style>

  <Style Selector=":is(TabControl).custom">
    <Setter Property="Background" Value="LightGray" />
  </Style>

  <Style Selector=":is(TabControl).custom /template/ Border#PART_ItemsPresenterBorder">
    <Setter Property="Background" Value="DarkGray" />
  </Style>

  <!-- TabItem Custom Styles -->

  <Style Selector=":is(TabControl).custom > :is(TabItem)">
    <Setter Property="Margin" Value="0,0,0,0" />
    <Setter Property="Padding" Value="12,0,12,0" />
    <Setter Property="Background" Value="WhiteSmoke" />
    <Setter Property="BorderBrush" Value="Black" />
    <Setter Property="BorderThickness" Value="1" />
  </Style>

  <Style Selector=":is(TabControl).custom > :is(TabItem):selected">
    <Setter Property="Background" Value="White" />
  </Style>

  <Style Selector=":is(TabControl).custom > :is(TabItem):pointerover /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="LightGray" />
  </Style>

  <Style Selector=":is(TabControl).custom > :is(TabItem):selected:pointerover /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="LightGray" />
  </Style>

  <Style Selector=":is(TabControl).custom > :is(TabItem):selected /template/ Border#PART_SelectedPipe">
    <Setter Property="IsVisible" Value="False" />
  </Style>

</Styles>


================================================
FILE: src/Avalonia.Xaml.Behaviors/Avalonia.Xaml.Behaviors.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
    <IncludeBuildOutput>False</IncludeBuildOutput>
    <Nullable>enable</Nullable>
    <NoWarn>$(NoWarn);NU5128</NoWarn>
  </PropertyGroup>

  <PropertyGroup>
    <PackageId>Avalonia.Xaml.Behaviors</PackageId>
    <Description>Easily add interactivity to your Avalonia apps using XAML Behaviors. Behaviors encapsulate reusable functionalities for elements that can be easily added to your XAML without the need for more imperative code.</Description>
    <PackageTags>Avalonia;Behavior;Action;Behaviors;Actions;Managed;C#;Interaction;Interactivity;Interactions;Xaml</PackageTags>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
  </ItemGroup>

  <Import Project="..\..\build\SignAssembly.props" />
  <Import Project="..\..\build\SourceLink.props" />

  <ItemGroup>
    <ProjectReference Include="..\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions\Avalonia.Xaml.Interactions.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions.Custom\Avalonia.Xaml.Interactions.Custom.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions.DragAndDrop\Avalonia.Xaml.Interactions.DragAndDrop.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions.Draggable\Avalonia.Xaml.Interactions.Draggable.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions.Events\Avalonia.Xaml.Interactions.Events.csproj" />
    <ProjectReference Include="..\Avalonia.Xaml.Interactions.Responsive\Avalonia.Xaml.Interactions.Responsive.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Avalonia.Xaml.Interactions/Avalonia.Xaml.Interactions.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
    <OutputType>Library</OutputType>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <PropertyGroup>
    <PackageId>Avalonia.Xaml.Interactions</PackageId>
    <Description>Easily add interactivity to your Avalonia apps using XAML Behaviors. Behaviors encapsulate reusable functionalities for elements that can be easily added to your XAML without the need for more imperative code.</Description>
    <PackageTags>Avalonia;Behavior;Action;Behaviors;Actions;Managed;C#;Interaction;Interactivity;Interactions;Xaml</PackageTags>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Avalonia" />
  </ItemGroup>

  <Import Project="..\..\build\SignAssembly.props" />
  <Import Project="..\..\build\SourceLink.props" />

  <ItemGroup>
    <ProjectReference Include="..\Avalonia.Xaml.Interactivity\Avalonia.Xaml.Interactivity.csproj" />
  </ItemGroup>

</Project>


================================================
FILE: src/Avalonia.Xaml.Interactions/Core/CallMethodAction.cs
================================================
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Reflection;
using System.Threading.Tasks;
using Avalonia.Controls;
using Avalonia.Reactive;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Core;

/// <summary>
/// An action that calls a method on a specified object when invoked.
/// </summary>
public class CallMethodAction : AvaloniaObject, IAction
{
    private Type? _targetObjectType;
    private readonly List<MethodDescriptor> _methodDescriptors = new();
    private MethodDescriptor? _cachedMethodDescriptor;

    /// <summary>
    /// Identifies the <seealso cref="IsEnabled"/> avalonia property.
    /// </summary>
    public static readonly StyledProperty<bool> IsEnabledProperty =
        AvaloniaProperty.Register<CallMethodAction, bool>(nameof(IsEnabled), defaultValue: true);

    /// <summary>
    /// Identifies the <seealso cref="MethodName"/> avalonia property.
    /// </summary>
    public static readonly StyledProperty<string> MethodNameProperty =
        AvaloniaProperty.Register<CallMethodAction, string>(nameof(MethodName));

    /// <summary>
    /// Identifies the <seealso cref="TargetObject"/> avalonia property.
    /// </summary>
    public static readonly StyledProperty<object?> TargetObjectProperty =
        AvaloniaProperty.Register<CallMethodAction, object?>(nameof(TargetObject));

    /// <summary>
    /// Gets or sets a value indicating whether this instance is enabled.
    /// </summary>
    /// <value><c>true</c> if this instance is enabled; otherwise, <c>false</c>.</value>
    public bool IsEnabled
    {
        get => GetValue(IsEnabledProperty);
        set => SetValue(IsEnabledProperty, value);
    }

    /// <summary>
    /// Gets or sets the name of the method to invoke. This is a avalonia property.
    /// </summary>
    public string MethodName
    {
        get => GetValue(MethodNameProperty);
        set => SetValue(MethodNameProperty, value);
    }

    /// <summary>
    /// Gets or sets the object that exposes the method of interest. This is a avalonia property.
    /// </summary>
    [ResolveByName]
    public object? TargetObject
    {
        get => GetValue(TargetObjectProperty);
        set => SetValue(TargetObjectProperty, value);
    }

    static CallMethodAction()
    {
        MethodNameProperty.Changed.Subscribe(
            new AnonymousObserver<AvaloniaPropertyChangedEventArgs<string>>(MethodNameChanged));

        TargetObjectProperty.Changed.Subscribe(
            new AnonymousObserver<AvaloniaPropertyChangedEventArgs<object?>>(TargetObjectChanged));
    }

    private static void MethodNameChanged(AvaloniaPropertyChangedEventArgs<string> e)
    {
        if (e.Sender is not CallMethodAction callMethodAction)
        {
            return;
        }
        
        callMethodAction.UpdateMethodDescriptors();
    }

    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    private static void TargetObjectChanged(AvaloniaPropertyChangedEventArgs<object?> e)
    {
        if (e.Sender is not CallMethodAction callMethodAction)
        {
            return;
        }

        var newValue = e.NewValue.GetValueOrDefault();
        if (newValue is not null)
        {
            var newType = newValue.GetType();
            callMethodAction.UpdateTargetType(newType);
        }
    }

    /// <summary>
    /// Executes the action.
    /// </summary>
    /// <param name="sender">The <see cref="object"/> that is passed to the action by the behavior. Generally this is <seealso cref="IBehavior.AssociatedObject"/> or a target object.</param>
    /// <param name="parameter">The value of this parameter is determined by the caller.</param>
    /// <returns>True if the method is called; else false.</returns>
    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    public virtual object Execute(object? sender, object? parameter)
    {
        if (!IsEnabled)
        {
            return false;
        }

        var target = GetValue(TargetObjectProperty) is not null ? TargetObject : sender;
        if (target is null || string.IsNullOrEmpty(MethodName))
        {
            return false;
        }

        UpdateTargetType(target.GetType());

        var methodDescriptor = FindBestMethod(parameter);
        if (methodDescriptor is null)
        {
            if (TargetObject is not null)
            {
                throw new ArgumentException(string.Format(
                    CultureInfo.CurrentCulture,
                    "Cannot find method named {0} on object of type {1} that matches the expected signature.",
                    MethodName,
                    _targetObjectType));
            }

            return false;
        }

        var parameters = methodDescriptor.Parameters;
        switch (parameters.Length)
        {
            case 0:
                methodDescriptor.MethodInfo.Invoke(target, null);
                return true;
            case 2:
                methodDescriptor.MethodInfo.Invoke(target, new[] { target, parameter! });
                return true;
            default:
                return false;
        }
    }

    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    private MethodDescriptor? FindBestMethod(object? parameter)
    {
        if (parameter is null)
        {
            return _cachedMethodDescriptor;
        }

        var parameterTypeInfo = parameter.GetType().GetTypeInfo();

        MethodDescriptor? mostDerivedMethod = null;

        // Loop over the methods looking for the one whose type is closest to the type of the given parameter.
        foreach (var currentMethod in _methodDescriptors)
        {
            var currentTypeInfo = currentMethod.SecondParameterTypeInfo;

            if (currentTypeInfo is not null && currentTypeInfo.IsAssignableFrom(parameterTypeInfo))
            {
                if (mostDerivedMethod is null || !currentTypeInfo.IsAssignableFrom(mostDerivedMethod.SecondParameterTypeInfo))
                {
                    mostDerivedMethod = currentMethod;
                }
            }
        }

        return mostDerivedMethod ?? _cachedMethodDescriptor;
    }

    private void UpdateTargetType(Type newTargetType)
    {
        if (newTargetType == _targetObjectType)
        {
            return;
        }

        _targetObjectType = newTargetType;

        UpdateMethodDescriptors();
    }

    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    private void UpdateMethodDescriptors()
    {
        _methodDescriptors.Clear();
        _cachedMethodDescriptor = null;

        if (string.IsNullOrEmpty(MethodName) || _targetObjectType is null)
        {
            return;
        }

        // Find all public methods that match the given name  and have either no parameters,
        // or two parameters where the first is of type Object.
        foreach (var method in _targetObjectType.GetRuntimeMethods())
        {
            if (string.Equals(method.Name, MethodName, StringComparison.Ordinal)
                && (method.ReturnType == typeof(void) || method.ReturnType == typeof(Task))
                && method.IsPublic)
            {
                var parameters = method.GetParameters();
                if (parameters.Length == 0)
                {
                    // There can be only one parameterless method of the given name.
                    _cachedMethodDescriptor = new MethodDescriptor(method, parameters);
                }
                else if (parameters.Length == 2 && parameters[0].ParameterType == typeof(object))
                {
                    _methodDescriptors.Add(new MethodDescriptor(method, parameters));
                }
            }
        }

        // We didn't find a parameterless method, so we want to find a method that accepts null
        // as a second parameter, but if we have more than one of these it is ambiguous which
        // we should call, so we do nothing.
        if (_cachedMethodDescriptor is null)
        {
            foreach (var method in _methodDescriptors)
            {
                var typeInfo = method.SecondParameterTypeInfo;
                if (typeInfo is not null && (!typeInfo.IsValueType || typeInfo.IsGenericType && typeInfo.GetGenericTypeDefinition() == typeof(Nullable<>)))
                {
                    if (_cachedMethodDescriptor is not null)
                    {
                        _cachedMethodDescriptor = null;
                        return;
                    }

                    _cachedMethodDescriptor = method;
                }
            }
        }
    }

    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    [DebuggerDisplay($"{{{nameof(MethodInfo)}}}")]
    private class MethodDescriptor(MethodInfo methodInfo, ParameterInfo[] methodParameters)
    {
        public MethodInfo MethodInfo { get; private set; } = methodInfo;

        public ParameterInfo[] Parameters { get; private set; } = methodParameters;

        public int ParameterCount => Parameters.Length;

        public TypeInfo? SecondParameterTypeInfo
        {
            get => ParameterCount < 2 ? null : Parameters[1].ParameterType.GetTypeInfo();
        }
    }
}


================================================
FILE: src/Avalonia.Xaml.Interactions/Core/ChangePropertyAction.cs
================================================
using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Reflection;
using Avalonia.Controls;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Core;

/// <summary>
/// An action that will change a specified property to a specified value when invoked.
/// </summary>
public class ChangePropertyAction : AvaloniaObject, IAction
{
    private static readonly char[] s_trimChars = { '(', ')' };
    private static readonly char[] s_separator = { '.' };

    [RequiresUnreferencedCode("This functionality is not compatible with trimming.")]
    private static Type? GetTypeByName(string name)
    {
        return
            AppDomain.CurrentDomain.GetAssemblies()
                .Reverse()
                .Select(assembly => assembly.GetType(name))
                .FirstOrDefault(t => t is not null)
            ??
            AppDomain.CurrentDomain.GetAssemblies()
                .Reverse()
                .SelectMany(assembly => assembly.GetTypes())
                .FirstOrDefault(t => t.Name == name);
    }

    [RequiresUnrefer
Download .txt
gitextract_xihcw05z/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── .github/
│   │   └── stale.yml
│   ├── FUNDING.yml
│   ├── stale.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── .nuke/
│   ├── build.schema.json
│   └── parameters.json
├── AvaloniaBehaviors.sln
├── Directory.Build.props
├── Directory.Packages.props
├── LICENSE.TXT
├── NuGet.Config
├── README.md
├── _config.yml
├── azure-pipelines.yml
├── build/
│   ├── SignAssembly.props
│   ├── SourceLink.props
│   ├── XUnit.props
│   ├── behaviors.public.snk
│   └── build/
│       ├── Build.cs
│       └── _build.csproj
├── build.cmd
├── build.ps1
├── build.sh
├── global.json
├── samples/
│   ├── BehaviorsTestApplication/
│   │   ├── App.axaml
│   │   ├── App.axaml.cs
│   │   ├── BehaviorsTestApplication.csproj
│   │   ├── Converters/
│   │   │   └── ClassesToStringConverter.cs
│   │   ├── Program.cs
│   │   ├── SideBar.axaml
│   │   ├── ViewModels/
│   │   │   ├── Core/
│   │   │   │   └── ViewModelBase.cs
│   │   │   ├── ItemViewModel.cs
│   │   │   └── MainWindowViewModel.cs
│   │   └── Views/
│   │       ├── ItemView.axaml
│   │       ├── ItemView.axaml.cs
│   │       ├── MainView.axaml
│   │       ├── MainView.axaml.cs
│   │       ├── MainWindow.axaml
│   │       ├── MainWindow.axaml.cs
│   │       └── Pages/
│   │           ├── AdaptiveBehaviorView.axaml
│   │           ├── AdaptiveBehaviorView.axaml.cs
│   │           ├── AddRemoveClassActionView.axaml
│   │           ├── AddRemoveClassActionView.axaml.cs
│   │           ├── AdvancedView.axaml
│   │           ├── AdvancedView.axaml.cs
│   │           ├── ButtonClickEventTriggerBehaviorView.axaml
│   │           ├── ButtonClickEventTriggerBehaviorView.axaml.cs
│   │           ├── CallMethodActionView.axaml
│   │           ├── CallMethodActionView.axaml.cs
│   │           ├── ChangeAvaloniaPropertyActionView.axaml
│   │           ├── ChangeAvaloniaPropertyActionView.axaml.cs
│   │           ├── ChangePropertyActionView.axaml
│   │           ├── ChangePropertyActionView.axaml.cs
│   │           ├── CustomActionView.axaml
│   │           ├── CustomActionView.axaml.cs
│   │           ├── CustomBehaviorView.axaml
│   │           ├── CustomBehaviorView.axaml.cs
│   │           ├── DataTriggerBehaviorView.axaml
│   │           ├── DataTriggerBehaviorView.axaml.cs
│   │           ├── EditableListBoxView.axaml
│   │           ├── EditableListBoxView.axaml.cs
│   │           ├── EditableTreeViewView.axaml
│   │           ├── EditableTreeViewView.axaml.cs
│   │           ├── EventTriggerBehaviorView.axaml
│   │           ├── EventTriggerBehaviorView.axaml.cs
│   │           ├── InvokeCommandActionView.axaml
│   │           ├── InvokeCommandActionView.axaml.cs
│   │           ├── RoutedEventTriggerBehaviorView.axaml
│   │           ├── RoutedEventTriggerBehaviorView.axaml.cs
│   │           ├── ValueChangedTriggerBehaviorView.axaml
│   │           └── ValueChangedTriggerBehaviorView.axaml.cs
│   ├── Directory.Packages.props
│   ├── DragAndDropSample/
│   │   ├── App.axaml
│   │   ├── App.axaml.cs
│   │   ├── Behaviors/
│   │   │   ├── BaseDataGridDropHandler.cs
│   │   │   ├── ContextDragWithDirectionBehavior.cs
│   │   │   ├── ItemsDataGridDropHandler.cs
│   │   │   ├── ItemsListBoxDropHandler.cs
│   │   │   ├── NodesListBoxDropHandler.cs
│   │   │   └── NodesTreeViewDropHandler.cs
│   │   ├── DragAndDropSample.csproj
│   │   ├── Program.cs
│   │   ├── ViewLocator.cs
│   │   ├── ViewModels/
│   │   │   ├── ItemViewModel.cs
│   │   │   ├── MainWindowViewModel.cs
│   │   │   ├── NodeViewModel.cs
│   │   │   └── ViewModelBase.cs
│   │   └── Views/
│   │       ├── MainWindow.axaml
│   │       └── MainWindow.axaml.cs
│   └── DraggableDemo/
│       ├── App.axaml
│       ├── App.axaml.cs
│       ├── DraggableDemo.csproj
│       ├── MainWindow.axaml
│       ├── MainWindow.axaml.cs
│       ├── Models/
│       │   ├── Item.cs
│       │   └── Tile.cs
│       ├── Program.cs
│       └── Styles/
│           └── Custom.axaml
├── src/
│   ├── Avalonia.Xaml.Behaviors/
│   │   └── Avalonia.Xaml.Behaviors.csproj
│   ├── Avalonia.Xaml.Interactions/
│   │   ├── Avalonia.Xaml.Interactions.csproj
│   │   ├── Core/
│   │   │   ├── CallMethodAction.cs
│   │   │   ├── ChangePropertyAction.cs
│   │   │   ├── DataTriggerBehavior.cs
│   │   │   ├── EventTriggerBehavior.cs
│   │   │   └── InvokeCommandAction.cs
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   ├── Avalonia.Xaml.Interactions.Custom/
│   │   ├── AddClassAction.cs
│   │   ├── AttachedToVisualTreeBehavior.cs
│   │   ├── Avalonia.Xaml.Interactions.Custom.csproj
│   │   ├── BindPointerOverBehavior.cs
│   │   ├── BindTagToVisualRootDataContextBehavior.cs
│   │   ├── BindingBehavior.cs
│   │   ├── BoundsObserverBehavior.cs
│   │   ├── ButtonClickEventTriggerBehavior.cs
│   │   ├── ButtonExecuteCommandOnKeyDownBehavior.cs
│   │   ├── ChangeAvaloniaPropertyAction.cs
│   │   ├── DisposingBehavior.cs
│   │   ├── DisposingTrigger.cs
│   │   ├── DragControlBehavior.cs
│   │   ├── ExecuteCommandBehaviorBase.cs
│   │   ├── ExecuteCommandOnActivatedBehavior.cs
│   │   ├── ExecuteCommandOnDoubleTappedBehavior.cs
│   │   ├── ExecuteCommandOnGotFocusBehavior.cs
│   │   ├── ExecuteCommandOnHoldingBehavior.cs
│   │   ├── ExecuteCommandOnKeyBehaviorBase.cs
│   │   ├── ExecuteCommandOnKeyDownBehavior.cs
│   │   ├── ExecuteCommandOnKeyUpBehavior.cs
│   │   ├── ExecuteCommandOnLostFocusBehavior.cs
│   │   ├── ExecuteCommandOnPinchBehavior.cs
│   │   ├── ExecuteCommandOnPinchEndedBehavior.cs
│   │   ├── ExecuteCommandOnPointerCaptureLostBehavior.cs
│   │   ├── ExecuteCommandOnPointerEnteredBehavior.cs
│   │   ├── ExecuteCommandOnPointerExitedBehavior.cs
│   │   ├── ExecuteCommandOnPointerMovedBehavior.cs
│   │   ├── ExecuteCommandOnPointerPressedBehavior.cs
│   │   ├── ExecuteCommandOnPointerReleasedBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureRotateBehavior.cs
│   │   ├── ExecuteCommandOnPointerTouchPadGestureSwipeBehavior.cs
│   │   ├── ExecuteCommandOnPointerWheelChangedBehavior.cs
│   │   ├── ExecuteCommandOnPullGestureBehavior.cs
│   │   ├── ExecuteCommandOnPullGestureEndedBehavior.cs
│   │   ├── ExecuteCommandOnRightTappedBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureEndedBehavior.cs
│   │   ├── ExecuteCommandOnScrollGestureInertiaStartingBehavior.cs
│   │   ├── ExecuteCommandOnTappedBehavior.cs
│   │   ├── ExecuteCommandOnTextInputBehavior.cs
│   │   ├── ExecuteCommandOnTextInputMethodClientRequestedBehavior.cs
│   │   ├── ExecuteCommandRoutedEventBehaviorBase.cs
│   │   ├── FadeInBehavior.cs
│   │   ├── FocusBehavior.cs
│   │   ├── FocusBehaviorBase.cs
│   │   ├── FocusControlAction.cs
│   │   ├── FocusOnAttachedBehavior.cs
│   │   ├── FocusOnAttachedToVisualTreeBehavior.cs
│   │   ├── FocusOnPointerMovedBehavior.cs
│   │   ├── FocusOnPointerPressedBehavior.cs
│   │   ├── FocusSelectedItemBehavior.cs
│   │   ├── HideFlyoutOnClickBehavior.cs
│   │   ├── HideOnKeyPressedBehavior.cs
│   │   ├── HideOnLostFocusBehavior.cs
│   │   ├── HorizontalScrollViewerBehavior.cs
│   │   ├── KeyDownTrigger.cs
│   │   ├── PopupAction.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── RemoveClassAction.cs
│   │   ├── RoutedEventTriggerBase.cs
│   │   ├── RoutedEventTriggerBehavior.cs
│   │   ├── SelectAllOnGotFocusBehavior.cs
│   │   ├── SelectListBoxItemOnPointerMovedBehavior.cs
│   │   ├── SelectingItemsControlBehavior.cs
│   │   ├── ShowBehaviorBase.cs
│   │   ├── ShowOnDoubleTappedBehavior.cs
│   │   ├── ShowOnKeyDownBehavior.cs
│   │   ├── ShowOnTappedBehavior.cs
│   │   ├── ShowPointerPositionBehavior.cs
│   │   ├── TextBoxSelectAllTextBehavior.cs
│   │   ├── ToggleIsExpandedOnDoubleTappedBehavior.cs
│   │   └── ValueChangedTriggerBehavior.cs
│   ├── Avalonia.Xaml.Interactions.DragAndDrop/
│   │   ├── Avalonia.Xaml.Interactions.DragAndDrop.csproj
│   │   ├── ContextDragBehavior.cs
│   │   ├── ContextDropBehavior.cs
│   │   ├── DropHandlerBase.cs
│   │   ├── IDragHandler.cs
│   │   ├── IDropHandler.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── TypedDragBehavior.cs
│   ├── Avalonia.Xaml.Interactions.Draggable/
│   │   ├── Avalonia.Xaml.Interactions.Draggable.csproj
│   │   ├── CanvasDragBehavior.cs
│   │   ├── GridDragBehavior.cs
│   │   ├── ItemDragBehavior.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SelectionAdorner.cs
│   │   └── Styles.axaml
│   ├── Avalonia.Xaml.Interactions.Events/
│   │   ├── Avalonia.Xaml.Interactions.Events.csproj
│   │   ├── DoubleTappedEventBehavior.cs
│   │   ├── GotFocusEventBehavior.cs
│   │   ├── KeyDownEventBehavior.cs
│   │   ├── KeyUpEventBehavior.cs
│   │   ├── LostFocusEventBehavior.cs
│   │   ├── PointerCaptureLostEventBehavior.cs
│   │   ├── PointerEnteredEventBehavior.cs
│   │   ├── PointerEventsBehavior.cs
│   │   ├── PointerExitedEventBehavior.cs
│   │   ├── PointerMovedEventBehavior.cs
│   │   ├── PointerPressedEventBehavior.cs
│   │   ├── PointerReleasedEventBehavior.cs
│   │   ├── PointerWheelChangedEventBehavior.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── RightTappedEventBehavior.cs
│   │   ├── ScrollGestureEndedEventBehavior.cs
│   │   ├── ScrollGestureEventBehavior.cs
│   │   ├── TappedEventBehavior.cs
│   │   ├── TextInputEventBehavior.cs
│   │   └── TextInputMethodClientRequestedEventBehavior.cs
│   ├── Avalonia.Xaml.Interactions.Responsive/
│   │   ├── AdaptiveBehavior.cs
│   │   ├── AdaptiveClassSetter.cs
│   │   ├── Avalonia.Xaml.Interactions.Responsive.csproj
│   │   └── Properties/
│   │       └── AssemblyInfo.cs
│   └── Avalonia.Xaml.Interactivity/
│       ├── ActionCollection.cs
│       ├── Avalonia.Xaml.Interactivity.csproj
│       ├── Behavior.cs
│       ├── BehaviorCollection.cs
│       ├── BehaviorCollectionTemplate.cs
│       ├── BehaviorOfT.cs
│       ├── ComparisonConditionType.cs
│       ├── IAction.cs
│       ├── IBehavior.cs
│       ├── ITrigger.cs
│       ├── Interaction.cs
│       ├── Properties/
│       │   └── AssemblyInfo.cs
│       ├── System/
│       │   └── Diagnostics/
│       │       └── CodeAnalysis/
│       │           └── TrimmingAttributes.cs
│       ├── Trigger.cs
│       ├── TriggerOfT.cs
│       └── TypeConverterHelper.cs
└── tests/
    ├── Avalonia.Xaml.Interactions.UnitTests/
    │   ├── App.axaml
    │   ├── App.axaml.cs
    │   ├── Avalonia.Xaml.Interactions.UnitTests.csproj
    │   ├── Core/
    │   │   ├── CallMethodAction001.axaml
    │   │   ├── CallMethodAction001.axaml.cs
    │   │   ├── CallMethodAction002.axaml
    │   │   ├── CallMethodAction002.axaml.cs
    │   │   ├── CallMethodActionTests.CallMethodAction_001.Linux.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_001.OSX.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_001.Windows.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.Linux.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.OSX.verified.txt
    │   │   ├── CallMethodActionTests.CallMethodAction_002.Windows.verified.txt
    │   │   ├── CallMethodActionTests.cs
    │   │   ├── ChangePropertyAction001.axaml
    │   │   ├── ChangePropertyAction001.axaml.cs
    │   │   ├── ChangePropertyAction002.axaml
    │   │   ├── ChangePropertyAction002.axaml.cs
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.Linux.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.OSX.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_001.Windows.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.Linux.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.OSX.verified.txt
    │   │   ├── ChangePropertyActionTests.ChangePropertyAction_002.Windows.verified.txt
    │   │   ├── ChangePropertyActionTests.cs
    │   │   ├── Command.cs
    │   │   ├── DataTriggerBehavior001.axaml
    │   │   ├── DataTriggerBehavior001.axaml.cs
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.Linux.verified.txt
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.OSX.verified.txt
    │   │   ├── DataTriggerBehaviorTests.DataTriggerBehavior_001.Windows.verified.txt
    │   │   ├── DataTriggerBehaviorTests.cs
    │   │   ├── EventTriggerBehavior001.axaml
    │   │   ├── EventTriggerBehavior001.axaml.cs
    │   │   ├── EventTriggerBehavior002.axaml
    │   │   ├── EventTriggerBehavior002.axaml.cs
    │   │   ├── EventTriggerBehavior003.axaml
    │   │   ├── EventTriggerBehavior003.axaml.cs
    │   │   ├── EventTriggerBehavior004.axaml
    │   │   ├── EventTriggerBehavior004.axaml.cs
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_001.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_002.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_003.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.Linux.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.OSX.verified.txt
    │   │   ├── EventTriggerBehaviorTests.EventTriggerBehavior_004.Windows.verified.txt
    │   │   ├── EventTriggerBehaviorTests.cs
    │   │   ├── InvokeCommandAction001.axaml
    │   │   ├── InvokeCommandAction001.axaml.cs
    │   │   ├── InvokeCommandAction002.axaml
    │   │   ├── InvokeCommandAction002.axaml.cs
    │   │   ├── InvokeCommandAction003.axaml
    │   │   ├── InvokeCommandAction003.axaml.cs
    │   │   ├── InvokeCommandAction004.axaml
    │   │   ├── InvokeCommandAction004.axaml.cs
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_001.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_002.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_003.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.Linux.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.OSX.verified.txt
    │   │   ├── InvokeCommandActionTests.InvokeCommandAction_004.Windows.verified.txt
    │   │   ├── InvokeCommandActionTests.cs
    │   │   └── TestValueConverter.cs
    │   ├── HeadlessWindowExtensions.cs
    │   ├── ModuleInit.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   └── TestAppBuilder.cs
    ├── Avalonia.Xaml.Interactivity.UnitTests/
    │   ├── App.axaml
    │   ├── App.axaml.cs
    │   ├── Avalonia.Xaml.Interactivity.UnitTests.csproj
    │   ├── BehaviorCollectionTemplate001.axaml
    │   ├── BehaviorCollectionTemplate001.axaml.cs
    │   ├── BehaviorCollectionTemplateTests.cs
    │   ├── BehaviorCollectionTest.cs
    │   ├── BehaviorOfTTests.cs
    │   ├── BehaviorTests.cs
    │   ├── InteractionTest.cs
    │   ├── InteractionTests.cs
    │   ├── Properties/
    │   │   └── AssemblyInfo.cs
    │   ├── StubAction.cs
    │   ├── StubBehavior.cs
    │   ├── TestAppBuilder.cs
    │   ├── TestUitilties.cs
    │   ├── TriggerOfTTests.cs
    │   └── TriggerTests.cs
    └── Directory.Packages.props
Download .txt
SYMBOL INDEX (780 symbols across 205 files)

FILE: build/build/Build.cs
  class Build (line 11) | class Build : NukeBuild
    method Main (line 13) | public static int Main() => Execute<Build>(x => x.Compile);
    method OnBuildInitialized (line 45) | protected override void OnBuildInitialized()
    method DeleteDirectories (line 51) | private void DeleteDirectories(IReadOnlyCollection<string> directories)

FILE: samples/BehaviorsTestApplication/App.axaml.cs
  class App (line 8) | public class App : Application
    method Initialize (line 10) | public override void Initialize()
    method OnFrameworkInitializationCompleted (line 15) | public override void OnFrameworkInitializationCompleted()

FILE: samples/BehaviorsTestApplication/Converters/ClassesToStringConverter.cs
  class ClassesToStringConverter (line 10) | public class ClassesToStringConverter : IMultiValueConverter
    method Convert (line 14) | public object Convert(IList<object?>? values, Type targetType, object?...

FILE: samples/BehaviorsTestApplication/Program.cs
  class Program (line 9) | class Program
    method Main (line 11) | [STAThread]
    method BuildAvaloniaApp (line 17) | public static AppBuilder BuildAvaloniaApp()

FILE: samples/BehaviorsTestApplication/ViewModels/Core/ViewModelBase.cs
  class ViewModelBase (line 5) | public abstract class ViewModelBase : ReactiveObject

FILE: samples/BehaviorsTestApplication/ViewModels/ItemViewModel.cs
  class ItemViewModel (line 7) | public class ItemViewModel(string name) : ViewModelBase
    method ToString (line 23) | public override string ToString() => name;

FILE: samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs
  class MainWindowViewModel (line 11) | public class MainWindowViewModel : ViewModelBase
    method MainWindowViewModel (line 44) | public MainWindowViewModel()
    method IncrementCount (line 112) | public void IncrementCount() => Count++;
    method DecrementCount (line 114) | public void DecrementCount(object? sender, object parameter) => Count--;

FILE: samples/BehaviorsTestApplication/Views/ItemView.axaml.cs
  class ItemView (line 7) | public partial class ItemView : UserControl
    method ItemView (line 9) | public ItemView()
    method InitializeComponent (line 14) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/MainView.axaml.cs
  class MainView (line 6) | public partial class MainView : UserControl
    method MainView (line 8) | public MainView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/MainWindow.axaml.cs
  class MainWindow (line 8) | public partial class MainWindow : Window
    method MainWindow (line 10) | public MainWindow()
    method InitializeComponent (line 17) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/AdaptiveBehaviorView.axaml.cs
  class AdaptiveBehaviorView (line 6) | public partial class AdaptiveBehaviorView : UserControl
    method AdaptiveBehaviorView (line 8) | public AdaptiveBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/AddRemoveClassActionView.axaml.cs
  class AddRemoveClassActionView (line 6) | public partial class AddRemoveClassActionView : UserControl
    method AddRemoveClassActionView (line 8) | public AddRemoveClassActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/AdvancedView.axaml.cs
  class AdvancedView (line 6) | public partial class AdvancedView : UserControl
    method AdvancedView (line 8) | public AdvancedView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/ButtonClickEventTriggerBehaviorView.axaml.cs
  class ButtonClickEventTriggerBehaviorView (line 6) | public partial class ButtonClickEventTriggerBehaviorView : UserControl
    method ButtonClickEventTriggerBehaviorView (line 8) | public ButtonClickEventTriggerBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/CallMethodActionView.axaml.cs
  class CallMethodActionView (line 6) | public partial class CallMethodActionView : UserControl
    method CallMethodActionView (line 8) | public CallMethodActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/ChangeAvaloniaPropertyActionView.axaml.cs
  class ChangeAvaloniaPropertyActionView (line 6) | public partial class ChangeAvaloniaPropertyActionView : UserControl
    method ChangeAvaloniaPropertyActionView (line 8) | public ChangeAvaloniaPropertyActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/ChangePropertyActionView.axaml.cs
  class ChangePropertyActionView (line 6) | public partial class ChangePropertyActionView : UserControl
    method ChangePropertyActionView (line 8) | public ChangePropertyActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/CustomActionView.axaml.cs
  class CustomActionView (line 6) | public partial class CustomActionView : UserControl
    method CustomActionView (line 8) | public CustomActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/CustomBehaviorView.axaml.cs
  class CustomBehaviorView (line 6) | public partial class CustomBehaviorView : UserControl
    method CustomBehaviorView (line 8) | public CustomBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/DataTriggerBehaviorView.axaml.cs
  class DataTriggerBehaviorView (line 6) | public partial class DataTriggerBehaviorView : UserControl
    method DataTriggerBehaviorView (line 8) | public DataTriggerBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/EditableListBoxView.axaml.cs
  class EditableListBoxView (line 6) | public partial class EditableListBoxView : UserControl
    method EditableListBoxView (line 8) | public EditableListBoxView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/EditableTreeViewView.axaml.cs
  class EditableTreeViewView (line 6) | public partial class EditableTreeViewView : UserControl
    method EditableTreeViewView (line 8) | public EditableTreeViewView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/EventTriggerBehaviorView.axaml.cs
  class EventTriggerBehaviorView (line 6) | public partial class EventTriggerBehaviorView : UserControl
    method EventTriggerBehaviorView (line 8) | public EventTriggerBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/InvokeCommandActionView.axaml.cs
  class InvokeCommandActionView (line 6) | public partial class InvokeCommandActionView : UserControl
    method InvokeCommandActionView (line 8) | public InvokeCommandActionView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/RoutedEventTriggerBehaviorView.axaml.cs
  class RoutedEventTriggerBehaviorView (line 6) | public partial class RoutedEventTriggerBehaviorView : UserControl
    method RoutedEventTriggerBehaviorView (line 8) | public RoutedEventTriggerBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/BehaviorsTestApplication/Views/Pages/ValueChangedTriggerBehaviorView.axaml.cs
  class ValueChangedTriggerBehaviorView (line 6) | public partial class ValueChangedTriggerBehaviorView : UserControl
    method ValueChangedTriggerBehaviorView (line 8) | public ValueChangedTriggerBehaviorView()
    method InitializeComponent (line 13) | private void InitializeComponent()

FILE: samples/DragAndDropSample/App.axaml.cs
  class App (line 9) | public class App : Application
    method Initialize (line 11) | public override void Initialize()
    method OnFrameworkInitializationCompleted (line 16) | public override void OnFrameworkInitializationCompleted()

FILE: samples/DragAndDropSample/Behaviors/BaseDataGridDropHandler.cs
  class BaseDataGridDropHandler (line 13) | public abstract class BaseDataGridDropHandler<T> : DropHandlerBase
    method MakeCopy (line 19) | protected abstract T MakeCopy(ObservableCollection<T> parentCollection...
    method Validate (line 21) | protected abstract bool Validate(DataGrid dg, DragEventArgs e, object?...
    method Validate (line 23) | public override bool Validate(object? sender, DragEventArgs e, object?...
    method Execute (line 41) | public override bool Execute(object? sender, DragEventArgs e, object? ...
    method Cancel (line 51) | public override void Cancel(object? sender, RoutedEventArgs e)
    method RunDropAction (line 59) | protected bool RunDropAction(DataGrid dg, DragEventArgs e, bool bExecu...
    method FindDataGridRowFromChildView (line 104) | private static DataGridRow? FindDataGridRowFromChildView(StyledElement...
    method GetRowsPresenter (line 119) | private static DataGridRowsPresenter? GetRowsPresenter(Visual v)
    method ClearDraggingStyleFromAllRows (line 131) | private static void ClearDraggingStyleFromAllRows(object? sender, Data...
    method ApplyDraggingStyleToRow (line 154) | private static void ApplyDraggingStyleToRow(DataGridRow row, string di...

FILE: samples/DragAndDropSample/Behaviors/ContextDragWithDirectionBehavior.cs
  class ContextDragWithDirectionBehavior (line 15) | public sealed class ContextDragWithDirectionBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 83) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 92) | protected override void OnDetachedFromVisualTree()
    method DoDragDrop (line 100) | private async Task DoDragDrop(PointerEventArgs triggerEvent, object? v...
    method Released (line 128) | private void Released()
    method AssociatedObject_PointerPressed (line 134) | private void AssociatedObject_PointerPressed(object? sender, PointerPr...
    method AssociatedObject_PointerReleased (line 150) | private void AssociatedObject_PointerReleased(object? sender, PointerR...
    method AssociatedObject_PointerMoved (line 163) | private async void AssociatedObject_PointerMoved(object? sender, Point...
    method AssociatedObject_CaptureLost (line 199) | private void AssociatedObject_CaptureLost(object? sender, PointerCaptu...

FILE: samples/DragAndDropSample/Behaviors/ItemsDataGridDropHandler.cs
  class ItemsDataGridDropHandler (line 9) | public sealed class ItemsDataGridDropHandler : BaseDataGridDropHandler<I...
    method MakeCopy (line 11) | protected override ItemViewModel MakeCopy(ObservableCollection<ItemVie...
    method Validate (line 14) | protected override bool Validate(DataGrid dg, DragEventArgs e, object?...

FILE: samples/DragAndDropSample/Behaviors/ItemsListBoxDropHandler.cs
  class ItemsListBoxDropHandler (line 9) | public class ItemsListBoxDropHandler : DropHandlerBase
    method Validate (line 11) | private bool Validate<T>(ListBox listBox, DragEventArgs e, object? sou...
    method Validate (line 62) | public override bool Validate(object? sender, DragEventArgs e, object?...
    method Execute (line 71) | public override bool Execute(object? sender, DragEventArgs e, object? ...

FILE: samples/DragAndDropSample/Behaviors/NodesListBoxDropHandler.cs
  class NodesListBoxDropHandler (line 9) | public class NodesListBoxDropHandler : DropHandlerBase
    method Validate (line 11) | private bool Validate<T>(ListBox listBox, DragEventArgs e, object? sou...
    method Validate (line 62) | public override bool Validate(object? sender, DragEventArgs e, object?...
    method Execute (line 71) | public override bool Execute(object? sender, DragEventArgs e, object? ...

FILE: samples/DragAndDropSample/Behaviors/NodesTreeViewDropHandler.cs
  class NodesTreeViewDropHandler (line 9) | public class NodesTreeViewDropHandler : DropHandlerBase
    method Validate (line 11) | private bool Validate<T>(TreeView treeView, DragEventArgs e, object? s...
    method Validate (line 91) | public override bool Validate(object? sender, DragEventArgs e, object?...
    method Execute (line 100) | public override bool Execute(object? sender, DragEventArgs e, object? ...

FILE: samples/DragAndDropSample/Program.cs
  class Program (line 10) | class Program
    method Main (line 15) | [STAThread]
    method BuildAvaloniaApp (line 20) | public static AppBuilder BuildAvaloniaApp()

FILE: samples/DragAndDropSample/ViewLocator.cs
  class ViewLocator (line 8) | public class ViewLocator : IDataTemplate
    method Build (line 10) | public Control Build(object? data)
    method Match (line 25) | public bool Match(object? data)

FILE: samples/DragAndDropSample/ViewModels/ItemViewModel.cs
  class ItemViewModel (line 5) | public class ItemViewModel : ViewModelBase
    method ToString (line 15) | public override string? ToString() => _title;

FILE: samples/DragAndDropSample/ViewModels/MainWindowViewModel.cs
  class MainWindowViewModel (line 6) | public class MainWindowViewModel : ViewModelBase
    method MainWindowViewModel (line 23) | public MainWindowViewModel()

FILE: samples/DragAndDropSample/ViewModels/NodeViewModel.cs
  class NodeViewModel (line 6) | public class NodeViewModel : ViewModelBase
    method ToString (line 30) | public override string? ToString() => _title;

FILE: samples/DragAndDropSample/ViewModels/ViewModelBase.cs
  class ViewModelBase (line 5) | public class ViewModelBase : ReactiveObject

FILE: samples/DragAndDropSample/Views/MainWindow.axaml.cs
  class MainWindow (line 7) | public partial class MainWindow : Window
    method MainWindow (line 9) | public MainWindow()
    method InitializeComponent (line 17) | private void InitializeComponent()

FILE: samples/DraggableDemo/App.axaml.cs
  class App (line 7) | public class App : Application
    method Initialize (line 9) | public override void Initialize()
    method OnFrameworkInitializationCompleted (line 14) | public override void OnFrameworkInitializationCompleted()

FILE: samples/DraggableDemo/MainWindow.axaml.cs
  class MainWindow (line 10) | public partial class MainWindow : Window
    method MainWindow (line 18) | public MainWindow()
    method InitializeComponent (line 55) | private void InitializeComponent()

FILE: samples/DraggableDemo/Models/Item.cs
  class Item (line 3) | public class Item
    method ToString (line 11) | public override string? ToString() => Title;

FILE: samples/DraggableDemo/Models/Tile.cs
  class Tile (line 3) | public class Tile
    method ToString (line 17) | public override string? ToString() => Title;

FILE: samples/DraggableDemo/Program.cs
  class Program (line 8) | class Program
    method Main (line 10) | public static void Main(string[] args) => BuildAvaloniaApp()
    method BuildAvaloniaApp (line 13) | public static AppBuilder BuildAvaloniaApp()

FILE: src/Avalonia.Xaml.Interactions.Custom/AddClassAction.cs
  class AddClassAction (line 9) | public class AddClassAction : AvaloniaObject, IAction
    method Execute (line 63) | public object Execute(object? sender, object? parameter)

FILE: src/Avalonia.Xaml.Interactions.Custom/AttachedToVisualTreeBehavior.cs
  class AttachedToVisualTreeBehavior (line 10) | public abstract class AttachedToVisualTreeBehavior<T> : DisposingBehavio...
    method OnAttached (line 15) | protected override void OnAttached(CompositeDisposable disposables)
    method OnAttachedToVisualTree (line 21) | protected override void OnAttachedToVisualTree()
    method OnAttachedToVisualTree (line 30) | protected abstract void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/BindPointerOverBehavior.cs
  class BindPointerOverBehavior (line 13) | public class BindPointerOverBehavior : DisposingBehavior<Control>
    method OnAttached (line 34) | protected override void OnAttached(CompositeDisposable disposables)

FILE: src/Avalonia.Xaml.Interactions.Custom/BindTagToVisualRootDataContextBehavior.cs
  class BindTagToVisualRootDataContextBehavior (line 11) | public class BindTagToVisualRootDataContextBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 26) | protected override void OnDetachedFromVisualTree()
    method BindDataContextToTag (line 31) | private static IDisposable? BindDataContextToTag(Control source, Contr...

FILE: src/Avalonia.Xaml.Interactions.Custom/BindingBehavior.cs
  class BindingBehavior (line 10) | public class BindingBehavior : AttachedToVisualTreeBehavior<Control>
    method OnAttachedToVisualTree (line 63) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/BoundsObserverBehavior.cs
  class BoundsObserverBehavior (line 11) | public class BoundsObserverBehavior : DisposingBehavior<Control>
    method OnAttached (line 64) | protected override void OnAttached(CompositeDisposable disposables)

FILE: src/Avalonia.Xaml.Interactions.Custom/ButtonClickEventTriggerBehavior.cs
  class ButtonClickEventTriggerBehavior (line 11) | public class ButtonClickEventTriggerBehavior : Trigger<Button>
    method OnAttachedToVisualTree (line 31) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 42) | protected override void OnDetachedFromVisualTree()
    method AssociatedObject_OnClick (line 52) | private void AssociatedObject_OnClick(object? sender, RoutedEventArgs e)
    method Button_OnKeyDown (line 60) | private void Button_OnKeyDown(object? sender, KeyEventArgs e)
    method Button_OnKeyUp (line 65) | private void Button_OnKeyUp(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ButtonExecuteCommandOnKeyDownBehavior.cs
  class ButtonExecuteCommandOnKeyDownBehavior (line 13) | public class ButtonExecuteCommandOnKeyDownBehavior : ExecuteCommandOnKey...
    method OnAttachedToVisualTree (line 19) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method RootDefaultKeyDown (line 28) | private void RootDefaultKeyDown(object? sender, KeyEventArgs e)
    method ExecuteCommand (line 44) | private bool ExecuteCommand(Button button)

FILE: src/Avalonia.Xaml.Interactions.Custom/ChangeAvaloniaPropertyAction.cs
  class ChangeAvaloniaPropertyAction (line 13) | public class ChangeAvaloniaPropertyAction : AvaloniaObject, IAction
    method Execute (line 68) | public virtual object Execute(object? sender, object? parameter)
    method UpdateAvaloniaPropertyValue (line 80) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method ValidateTargetProperty (line 137) | private void ValidateTargetProperty(AvaloniaProperty? targetProperty)

FILE: src/Avalonia.Xaml.Interactions.Custom/DisposingBehavior.cs
  class DisposingBehavior (line 10) | public abstract class DisposingBehavior<T> : Behavior<T> where T : Avalo...
    method OnAttached (line 15) | protected override void OnAttached()
    method OnAttached (line 30) | protected abstract void OnAttached(CompositeDisposable disposables);
    method OnDetaching (line 33) | protected override void OnDetaching()

FILE: src/Avalonia.Xaml.Interactions.Custom/DisposingTrigger.cs
  class DisposingTrigger (line 9) | public abstract class DisposingTrigger : Trigger
    method OnAttached (line 16) | protected override void OnAttached()
    method OnAttached (line 27) | protected abstract void OnAttached(CompositeDisposable disposables);
    method OnDetaching (line 32) | protected override void OnDetaching()

FILE: src/Avalonia.Xaml.Interactions.Custom/DragControlBehavior.cs
  class DragControlBehavior (line 11) | public sealed class DragControlBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 33) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 43) | protected override void OnDetachedFromVisualTree()
    method Source_PointerPressed (line 54) | private void Source_PointerPressed(object? sender, PointerPressedEvent...
    method Parent_PointerMoved (line 75) | private void Parent_PointerMoved(object? sender, PointerEventArgs args)
    method Parent_PointerReleased (line 91) | private void Parent_PointerReleased(object? sender, PointerReleasedEve...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandBehaviorBase.cs
  class ExecuteCommandBehaviorBase (line 11) | public abstract class ExecuteCommandBehaviorBase : AttachedToVisualTreeB...
    method ExecuteCommand (line 93) | protected virtual bool ExecuteCommand()

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnActivatedBehavior.cs
  class ExecuteCommandOnActivatedBehavior (line 11) | public class ExecuteCommandOnActivatedBehavior : ExecuteCommandBehaviorBase
    method OnAttachedToVisualTree (line 17) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnDoubleTappedBehavior.cs
  class ExecuteCommandOnDoubleTappedBehavior (line 10) | public class ExecuteCommandOnDoubleTappedBehavior : ExecuteCommandRouted...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnDoubleTapped (line 30) | private void OnDoubleTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnGotFocusBehavior.cs
  class ExecuteCommandOnGotFocusBehavior (line 10) | public class ExecuteCommandOnGotFocusBehavior : ExecuteCommandRoutedEven...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnGotFocus (line 30) | private void OnGotFocus(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnHoldingBehavior.cs
  class ExecuteCommandOnHoldingBehavior (line 10) | public class ExecuteCommandOnHoldingBehavior : ExecuteCommandRoutedEvent...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnHolding (line 30) | private void OnHolding(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyBehaviorBase.cs
  class ExecuteCommandOnKeyBehaviorBase (line 8) | public abstract class ExecuteCommandOnKeyBehaviorBase : ExecuteCommandRo...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyDownBehavior.cs
  class ExecuteCommandOnKeyDownBehavior (line 10) | public class ExecuteCommandOnKeyDownBehavior : ExecuteCommandOnKeyBehavi...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnKeyDown (line 30) | private void OnKeyDown(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyUpBehavior.cs
  class ExecuteCommandOnKeyUpBehavior (line 10) | public class ExecuteCommandOnKeyUpBehavior : ExecuteCommandOnKeyBehavior...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnKeyUp (line 30) | private void OnKeyUp(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnLostFocusBehavior.cs
  class ExecuteCommandOnLostFocusBehavior (line 10) | public class ExecuteCommandOnLostFocusBehavior : ExecuteCommandRoutedEve...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnLostFocus (line 30) | private void OnLostFocus(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPinchBehavior.cs
  class ExecuteCommandOnPinchBehavior (line 10) | public class ExecuteCommandOnPinchBehavior : ExecuteCommandRoutedEventBe...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPinch (line 30) | private void OnPinch(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPinchEndedBehavior.cs
  class ExecuteCommandOnPinchEndedBehavior (line 10) | public class ExecuteCommandOnPinchEndedBehavior : ExecuteCommandRoutedEv...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPinchEnded (line 30) | private void OnPinchEnded(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerCaptureLostBehavior.cs
  class ExecuteCommandOnPointerCaptureLostBehavior (line 10) | public class ExecuteCommandOnPointerCaptureLostBehavior : ExecuteCommand...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerCaptureLost (line 30) | private void OnPointerCaptureLost(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerEnteredBehavior.cs
  class ExecuteCommandOnPointerEnteredBehavior (line 10) | public class ExecuteCommandOnPointerEnteredBehavior : ExecuteCommandRout...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerEntered (line 30) | private void OnPointerEntered(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerExitedBehavior.cs
  class ExecuteCommandOnPointerExitedBehavior (line 10) | public class ExecuteCommandOnPointerExitedBehavior : ExecuteCommandRoute...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerExited (line 30) | private void OnPointerExited(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerMovedBehavior.cs
  class ExecuteCommandOnPointerMovedBehavior (line 10) | public class ExecuteCommandOnPointerMovedBehavior : ExecuteCommandRouted...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerMoved (line 30) | private void OnPointerMoved(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerPressedBehavior.cs
  class ExecuteCommandOnPointerPressedBehavior (line 10) | public class ExecuteCommandOnPointerPressedBehavior : ExecuteCommandRout...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerPressed (line 30) | private void OnPointerPressed(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerReleasedBehavior.cs
  class ExecuteCommandOnPointerReleasedBehavior (line 10) | public class ExecuteCommandOnPointerReleasedBehavior : ExecuteCommandRou...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerReleased (line 30) | private void OnPointerReleased(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior.cs
  class ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior (line 10) | public class ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior : Exe...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerTouchPadGestureMagnify (line 30) | private void OnPointerTouchPadGestureMagnify(object? sender, RoutedEve...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureRotateBehavior.cs
  class ExecuteCommandOnPointerTouchPadGestureRotateBehavior (line 10) | public class ExecuteCommandOnPointerTouchPadGestureRotateBehavior : Exec...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerTouchPadGestureRotate (line 30) | private void OnPointerTouchPadGestureRotate(object? sender, RoutedEven...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureSwipeBehavior.cs
  class ExecuteCommandOnPointerTouchPadGestureSwipeBehavior (line 10) | public class ExecuteCommandOnPointerTouchPadGestureSwipeBehavior : Execu...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerTouchPadGestureSwipe (line 30) | private void OnPointerTouchPadGestureSwipe(object? sender, RoutedEvent...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerWheelChangedBehavior.cs
  class ExecuteCommandOnPointerWheelChangedBehavior (line 10) | public class ExecuteCommandOnPointerWheelChangedBehavior : ExecuteComman...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPointerWheelChanged (line 30) | private void OnPointerWheelChanged(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPullGestureBehavior.cs
  class ExecuteCommandOnPullGestureBehavior (line 10) | public class ExecuteCommandOnPullGestureBehavior : ExecuteCommandRoutedE...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPullGesture (line 30) | private void OnPullGesture(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPullGestureEndedBehavior.cs
  class ExecuteCommandOnPullGestureEndedBehavior (line 10) | public class ExecuteCommandOnPullGestureEndedBehavior : ExecuteCommandRo...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnPullGestureEnded (line 30) | private void OnPullGestureEnded(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnRightTappedBehavior.cs
  class ExecuteCommandOnRightTappedBehavior (line 10) | public class ExecuteCommandOnRightTappedBehavior : ExecuteCommandRoutedE...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnRightTapped (line 30) | private void OnRightTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureBehavior.cs
  class ExecuteCommandOnScrollGestureBehavior (line 10) | public class ExecuteCommandOnScrollGestureBehavior : ExecuteCommandRoute...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnScrollGesture (line 30) | private void OnScrollGesture(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureEndedBehavior.cs
  class ExecuteCommandOnScrollGestureEndedBehavior (line 10) | public class ExecuteCommandOnScrollGestureEndedBehavior : ExecuteCommand...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnScrollGestureEnded (line 30) | private void OnScrollGestureEnded(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureInertiaStartingBehavior.cs
  class ExecuteCommandOnScrollGestureInertiaStartingBehavior (line 10) | public class ExecuteCommandOnScrollGestureInertiaStartingBehavior : Exec...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnScrollGestureInertiaStarting (line 30) | private void OnScrollGestureInertiaStarting(object? sender, RoutedEven...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTappedBehavior.cs
  class ExecuteCommandOnTappedBehavior (line 10) | public class ExecuteCommandOnTappedBehavior : ExecuteCommandRoutedEventB...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnTapped (line 30) | private void OnTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTextInputBehavior.cs
  class ExecuteCommandOnTextInputBehavior (line 10) | public class ExecuteCommandOnTextInputBehavior : ExecuteCommandRoutedEve...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnTextInput (line 30) | private void OnTextInput(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTextInputMethodClientRequestedBehavior.cs
  class ExecuteCommandOnTextInputMethodClientRequestedBehavior (line 10) | public class ExecuteCommandOnTextInputMethodClientRequestedBehavior : Ex...
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method OnTextInputMethodClientRequested (line 30) | private void OnTextInputMethodClientRequested(object? sender, RoutedEv...

FILE: src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandRoutedEventBehaviorBase.cs
  class ExecuteCommandRoutedEventBehaviorBase (line 8) | public abstract class ExecuteCommandRoutedEventBehaviorBase : ExecuteCom...

FILE: src/Avalonia.Xaml.Interactions.Custom/FadeInBehavior.cs
  class FadeInBehavior (line 11) | public class FadeInBehavior : AttachedToVisualTreeBehavior<Visual>
    method OnAttachedToVisualTree (line 47) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusBehavior.cs
  class FocusBehavior (line 12) | public class FocusBehavior : DisposingBehavior<Control>
    method OnAttached (line 33) | protected override void OnAttached(CompositeDisposable disposables)

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusBehaviorBase.cs
  class FocusBehaviorBase (line 10) | public abstract class FocusBehaviorBase : AttachedToVisualTreeBehavior<C...
    method Focus (line 61) | protected virtual bool Focus()

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusControlAction.cs
  class FocusControlAction (line 10) | public class FocusControlAction : AvaloniaObject, IAction
    method Execute (line 34) | public virtual object? Execute(object? sender, object? parameter)

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusOnAttachedBehavior.cs
  class FocusOnAttachedBehavior (line 8) | public class FocusOnAttachedBehavior : FocusBehaviorBase
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusOnAttachedToVisualTreeBehavior.cs
  class FocusOnAttachedToVisualTreeBehavior (line 10) | public class FocusOnAttachedToVisualTreeBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 13) | protected override void OnAttachedToVisualTree()

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusOnPointerMovedBehavior.cs
  class FocusOnPointerMovedBehavior (line 11) | public class FocusOnPointerMovedBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 23) | protected override void OnDetachedFromVisualTree()
    method PointerMoved (line 31) | private void PointerMoved(object? sender, PointerEventArgs args)

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusOnPointerPressedBehavior.cs
  class FocusOnPointerPressedBehavior (line 11) | public class FocusOnPointerPressedBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 23) | protected override void OnDetachedFromVisualTree()
    method PointerPressed (line 31) | private void PointerPressed(object? sender, PointerPressedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/FocusSelectedItemBehavior.cs
  class FocusSelectedItemBehavior (line 12) | public class FocusSelectedItemBehavior : AttachedToVisualTreeBehavior<It...
    method OnAttachedToVisualTree (line 18) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/HideFlyoutOnClickBehavior.cs
  class HideFlyoutOnClickBehavior (line 14) | public class HideFlyoutOnClickBehavior : Behavior<RadioButton>
    method OnAttachedToVisualTree (line 21) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 54) | protected override void OnDetachedFromVisualTree()

FILE: src/Avalonia.Xaml.Interactions.Custom/HideOnKeyPressedBehavior.cs
  class HideOnKeyPressedBehavior (line 11) | public class HideOnKeyPressedBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 45) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 52) | protected override void OnDetachedFromVisualTree()
    method AssociatedObject_KeyDown (line 57) | private void AssociatedObject_KeyDown(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/HideOnLostFocusBehavior.cs
  class HideOnLostFocusBehavior (line 11) | public class HideOnLostFocusBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 37) | protected override void OnDetachedFromVisualTree()
    method AssociatedObject_LostFocus (line 42) | private void AssociatedObject_LostFocus(object? sender, RoutedEventArg...

FILE: src/Avalonia.Xaml.Interactions.Custom/HorizontalScrollViewerBehavior.cs
  class HorizontalScrollViewerBehavior (line 11) | public class HorizontalScrollViewerBehavior : Behavior<ScrollViewer>
    type ChangeSize (line 16) | public enum ChangeSize
    method OnAttached (line 77) | protected override void OnAttached()
    method OnDetaching (line 88) | protected override void OnDetaching()
    method OnPointerWheelChanged (line 100) | private void OnPointerWheelChanged(object? sender, PointerWheelEventAr...

FILE: src/Avalonia.Xaml.Interactions.Custom/KeyDownTrigger.cs
  class KeyDownTrigger (line 11) | public class KeyDownTrigger : RoutedEventTriggerBase
    method OnAttached (line 37) | protected override void OnAttached(CompositeDisposable disposables)
    method OnKeyDown (line 46) | private void OnKeyDown(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/PopupAction.cs
  class PopupAction (line 13) | public class PopupAction : AvaloniaObject, IAction
    method Execute (line 39) | public virtual object? Execute(object? sender, object? parameter)
    method BindToDataContext (line 63) | private static void BindToDataContext(Control source, Control target)

FILE: src/Avalonia.Xaml.Interactions.Custom/RemoveClassAction.cs
  class RemoveClassAction (line 9) | public class RemoveClassAction : AvaloniaObject, IAction
    method Execute (line 48) | public object Execute(object? sender, object? parameter)

FILE: src/Avalonia.Xaml.Interactions.Custom/RoutedEventTriggerBase.cs
  class RoutedEventTriggerBase (line 8) | public abstract class RoutedEventTriggerBase : DisposingTrigger

FILE: src/Avalonia.Xaml.Interactions.Custom/RoutedEventTriggerBehavior.cs
  class RoutedEventTriggerBehavior (line 11) | public class RoutedEventTriggerBehavior : Trigger<Interactive>
    method RoutedEventTriggerBehavior (line 64) | static RoutedEventTriggerBehavior()
    method OnValueChanged (line 76) | private static void OnValueChanged(AvaloniaPropertyChangedEventArgs args)
    method OnAttachedToVisualTree (line 91) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 98) | protected override void OnDetachedFromVisualTree()
    method AddHandler (line 104) | private void AddHandler()
    method RemoveHandler (line 114) | private void RemoveHandler()
    method ComputeResolvedSourceInteractive (line 124) | private Interactive? ComputeResolvedSourceInteractive()
    method Handler (line 129) | private void Handler(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/SelectAllOnGotFocusBehavior.cs
  class SelectAllOnGotFocusBehavior (line 11) | public class SelectAllOnGotFocusBehavior : Behavior<TextBox>
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 20) | protected override void OnDetachedFromVisualTree()
    method AssociatedObject_GotFocus (line 25) | private void AssociatedObject_GotFocus(object? sender, GotFocusEventAr...

FILE: src/Avalonia.Xaml.Interactions.Custom/SelectListBoxItemOnPointerMovedBehavior.cs
  class SelectListBoxItemOnPointerMovedBehavior (line 11) | public class SelectListBoxItemOnPointerMovedBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 23) | protected override void OnDetachedFromVisualTree()
    method PointerMoved (line 31) | private void PointerMoved(object? sender, PointerEventArgs args)

FILE: src/Avalonia.Xaml.Interactions.Custom/SelectingItemsControlBehavior.cs
  class SelectingItemsControlBehavior (line 17) | public class SelectingItemsControlBehavior
    method SelectingItemsControlBehavior (line 29) | static SelectingItemsControlBehavior()
    method OnEnableSelectionAnimation (line 34) | private static void OnEnableSelectionAnimation(Control control, Avalon...
    method SelectingItemsControlPropertyChanged (line 49) | private static void SelectingItemsControlPropertyChanged(object? sende...
    method StartOffsetAnimation (line 67) | private static void StartOffsetAnimation(TemplatedControl newSelection...
    method GetEnableSelectionAnimation (line 150) | public static bool GetEnableSelectionAnimation(SelectingItemsControl e...
    method SetEnableSelectionAnimation (line 160) | public static void SetEnableSelectionAnimation(SelectingItemsControl e...

FILE: src/Avalonia.Xaml.Interactions.Custom/ShowBehaviorBase.cs
  class ShowBehaviorBase (line 10) | public abstract class ShowBehaviorBase : AttachedToVisualTreeBehavior<Co...
    method Show (line 62) | protected bool Show()

FILE: src/Avalonia.Xaml.Interactions.Custom/ShowOnDoubleTappedBehavior.cs
  class ShowOnDoubleTappedBehavior (line 10) | public class ShowOnDoubleTappedBehavior : ShowBehaviorBase
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method AssociatedObject_DoubleTapped (line 30) | private void AssociatedObject_DoubleTapped(object? sender, RoutedEvent...

FILE: src/Avalonia.Xaml.Interactions.Custom/ShowOnKeyDownBehavior.cs
  class ShowOnKeyDownBehavior (line 10) | public class ShowOnKeyDownBehavior : ShowBehaviorBase
    method OnAttachedToVisualTree (line 46) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method AssociatedObject_KeyDown (line 60) | private void AssociatedObject_KeyDown(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ShowOnTappedBehavior.cs
  class ShowOnTappedBehavior (line 10) | public class ShowOnTappedBehavior : ShowBehaviorBase
    method OnAttachedToVisualTree (line 16) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...
    method AssociatedObject_Tapped (line 30) | private void AssociatedObject_Tapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Custom/ShowPointerPositionBehavior.cs
  class ShowPointerPositionBehavior (line 10) | public class ShowPointerPositionBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 29) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 38) | protected override void OnDetachedFromVisualTree()
    method AssociatedObject_PointerMoved (line 46) | private void AssociatedObject_PointerMoved(object? sender, PointerEven...

FILE: src/Avalonia.Xaml.Interactions.Custom/TextBoxSelectAllTextBehavior.cs
  class TextBoxSelectAllTextBehavior (line 9) | public class TextBoxSelectAllTextBehavior : AttachedToVisualTreeBehavior...
    method OnAttachedToVisualTree (line 15) | protected override void OnAttachedToVisualTree(CompositeDisposable dis...

FILE: src/Avalonia.Xaml.Interactions.Custom/ToggleIsExpandedOnDoubleTappedBehavior.cs
  class ToggleIsExpandedOnDoubleTappedBehavior (line 11) | public class ToggleIsExpandedOnDoubleTappedBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 14) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 23) | protected override void OnDetachedFromVisualTree()
    method DoubleTapped (line 31) | private void DoubleTapped(object? sender, RoutedEventArgs args)

FILE: src/Avalonia.Xaml.Interactions.Custom/ValueChangedTriggerBehavior.cs
  class ValueChangedTriggerBehavior (line 9) | public class ValueChangedTriggerBehavior : Trigger
    method ValueChangedTriggerBehavior (line 11) | static ValueChangedTriggerBehavior()
    method OnValueChanged (line 32) | private static void OnValueChanged(AvaloniaPropertyChangedEventArgs args)

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/ContextDragBehavior.cs
  class ContextDragBehavior (line 14) | public class ContextDragBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 82) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 91) | protected override void OnDetachedFromVisualTree()
    method DoDragDrop (line 99) | private async Task DoDragDrop(PointerEventArgs triggerEvent, object? v...
    method Released (line 126) | private void Released()
    method AssociatedObject_PointerPressed (line 132) | private void AssociatedObject_PointerPressed(object? sender, PointerPr...
    method AssociatedObject_PointerReleased (line 149) | private void AssociatedObject_PointerReleased(object? sender, PointerR...
    method AssociatedObject_PointerMoved (line 162) | private async void AssociatedObject_PointerMoved(object? sender, Point...
    method AssociatedObject_CaptureLost (line 198) | private void AssociatedObject_CaptureLost(object? sender, PointerCaptu...

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/ContextDropBehavior.cs
  class ContextDropBehavior (line 11) | public class ContextDropBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 49) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 62) | protected override void OnDetachedFromVisualTree()
    method DragEnter (line 74) | private void DragEnter(object? sender, DragEventArgs e)
    method DragLeave (line 81) | private void DragLeave(object? sender, RoutedEventArgs e)
    method DragOver (line 86) | private void DragOver(object? sender, DragEventArgs e)
    method Drop (line 93) | private void Drop(object? sender, DragEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/DropHandlerBase.cs
  class DropHandlerBase (line 10) | public abstract class DropHandlerBase : IDropHandler
    method MoveItem (line 19) | protected void MoveItem<T>(IList<T> items, int sourceIndex, int target...
    method MoveItem (line 47) | protected void MoveItem<T>(IList<T> sourceItems, IList<T> targetItems,...
    method SwapItem (line 61) | protected void SwapItem<T>(IList<T> items, int sourceIndex, int target...
    method SwapItem (line 77) | protected void SwapItem<T>(IList<T> sourceItems, IList<T> targetItems,...
    method InsertItem (line 92) | protected void InsertItem<T>(IList<T> items, T item, int index)
    method Enter (line 104) | public virtual void Enter(object? sender, DragEventArgs e, object? sou...
    method Over (line 125) | public virtual void Over(object? sender, DragEventArgs e, object? sour...
    method Drop (line 146) | public virtual void Drop(object? sender, DragEventArgs e, object? sour...
    method Leave (line 165) | public virtual void Leave(object? sender, RoutedEventArgs e)
    method Validate (line 179) | public virtual bool Validate(object? sender, DragEventArgs e, object? ...
    method Execute (line 193) | public virtual bool Execute(object? sender, DragEventArgs e, object? s...
    method Cancel (line 203) | public virtual void Cancel(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/IDragHandler.cs
  type IDragHandler (line 8) | public interface IDragHandler
    method BeforeDragDrop (line 16) | void BeforeDragDrop(object? sender, PointerEventArgs e, object? context);
    method AfterDragDrop (line 24) | void AfterDragDrop(object? sender, PointerEventArgs e, object? context);

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/IDropHandler.cs
  type IDropHandler (line 9) | public interface IDropHandler
    method Enter (line 18) | void Enter(object? sender, DragEventArgs e, object? sourceContext, obj...
    method Over (line 27) | void Over(object? sender, DragEventArgs e, object? sourceContext, obje...
    method Drop (line 36) | void Drop(object? sender, DragEventArgs e, object? sourceContext, obje...
    method Leave (line 43) | void Leave(object? sender, RoutedEventArgs e);
    method Validate (line 54) | bool Validate(object? sender, DragEventArgs e, object? sourceContext, ...
    method Execute (line 65) | bool Execute(object? sender, DragEventArgs e, object? sourceContext, o...
    method Cancel (line 72) | void Cancel(object? sender, RoutedEventArgs e);

FILE: src/Avalonia.Xaml.Interactions.DragAndDrop/TypedDragBehavior.cs
  class TypedDragBehavior (line 14) | public class TypedDragBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 52) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 60) | protected override void OnDetachedFromVisualTree()
    method DoDragDrop (line 67) | private async Task DoDragDrop(PointerEventArgs triggerEvent, object? v...
    method AssociatedObject_PointerPressed (line 94) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method AssociatedObject_PointerReleased (line 113) | private void AssociatedObject_PointerReleased(object? sender, PointerR...
    method AssociatedObject_PointerMoved (line 124) | private async void AssociatedObject_PointerMoved(object? sender, Point...

FILE: src/Avalonia.Xaml.Interactions.Draggable/CanvasDragBehavior.cs
  class CanvasDragBehavior (line 13) | public class CanvasDragBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 23) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 35) | protected override void OnDetachedFromVisualTree()
    method AddAdorner (line 46) | private void AddAdorner(Control control)
    method RemoveAdorner (line 63) | private void RemoveAdorner(Control control)
    method Pressed (line 76) | private void Pressed(object? sender, PointerPressedEventArgs e)
    method Released (line 95) | private void Released(object? sender, PointerReleasedEventArgs e)
    method CaptureLost (line 108) | private void CaptureLost(object? sender, PointerCaptureLostEventArgs e)
    method Moved (line 114) | private void Moved(object? sender, PointerEventArgs e)
    method Released (line 136) | private void Released()
    method SetDraggingPseudoClasses (line 156) | private void SetDraggingPseudoClasses(Control control, bool isDragging)

FILE: src/Avalonia.Xaml.Interactions.Draggable/GridDragBehavior.cs
  class GridDragBehavior (line 12) | public class GridDragBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 81) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 93) | protected override void OnDetachedFromVisualTree()
    method AddAdorner (line 104) | private void AddAdorner(Control control)
    method RemoveAdorner (line 121) | private void RemoveAdorner(Control control)
    method Pressed (line 134) | private void Pressed(object? sender, PointerPressedEventArgs e)
    method Released (line 153) | private void Released(object? sender, PointerReleasedEventArgs e)
    method CaptureLost (line 166) | private void CaptureLost(object? sender, PointerCaptureLostEventArgs e)
    method Moved (line 172) | private void Moved(object? sender, PointerEventArgs e)
    method Released (line 290) | private void Released()
    method SetDraggingPseudoClasses (line 310) | private void SetDraggingPseudoClasses(Control control, bool isDragging)

FILE: src/Avalonia.Xaml.Interactions.Draggable/ItemDragBehavior.cs
  class ItemDragBehavior (line 16) | public class ItemDragBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 73) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 85) | protected override void OnDetachedFromVisualTree()
    method PointerPressed (line 96) | private void PointerPressed(object? sender, PointerPressedEventArgs e)
    method PointerReleased (line 121) | private void PointerReleased(object? sender, PointerReleasedEventArgs e)
    method PointerCaptureLost (line 134) | private void PointerCaptureLost(object? sender, PointerCaptureLostEven...
    method Released (line 140) | private void Released()
    method AddTransforms (line 187) | private void AddTransforms(ItemsControl? itemsControl)
    method RemoveTransforms (line 208) | private void RemoveTransforms(ItemsControl? itemsControl)
    method MoveDraggedItem (line 229) | private void MoveDraggedItem(ItemsControl? itemsControl, int draggedIn...
    method PointerMoved (line 258) | private void PointerMoved(object? sender, PointerEventArgs e)
    method SetDraggingPseudoClasses (line 393) | private void SetDraggingPseudoClasses(Control control, bool isDragging)
    method SetTranslateTransform (line 405) | private void SetTranslateTransform(Control control, double x, double y)

FILE: src/Avalonia.Xaml.Interactions.Draggable/SelectionAdorner.cs
  class SelectionAdorner (line 11) | public class SelectionAdorner : Control
    method Render (line 17) | public override void Render(DrawingContext context)

FILE: src/Avalonia.Xaml.Interactions.Events/DoubleTappedEventBehavior.cs
  class DoubleTappedEventBehavior (line 10) | public abstract class DoubleTappedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 31) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 37) | protected override void OnDetachedFromVisualTree()
    method DoubleTapped (line 42) | private void DoubleTapped(object? sender, RoutedEventArgs e)
    method OnDoubleTapped (line 52) | protected virtual void OnDoubleTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/GotFocusEventBehavior.cs
  class GotFocusEventBehavior (line 10) | public abstract class GotFocusEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 31) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 37) | protected override void OnDetachedFromVisualTree()
    method GotFocus (line 42) | private void GotFocus(object? sender, GotFocusEventArgs e)
    method OnGotFocus (line 52) | protected virtual void OnGotFocus(object? sender, GotFocusEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/KeyDownEventBehavior.cs
  class KeyDownEventBehavior (line 10) | public abstract class KeyDownEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method KeyDown (line 41) | private void KeyDown(object? sender, KeyEventArgs e)
    method OnKeyDown (line 51) | protected virtual void OnKeyDown(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/KeyUpEventBehavior.cs
  class KeyUpEventBehavior (line 10) | public abstract class KeyUpEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method KeyUp (line 41) | private void KeyUp(object? sender, KeyEventArgs e)
    method OnKeyUp (line 51) | protected virtual void OnKeyUp(object? sender, KeyEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/LostFocusEventBehavior.cs
  class LostFocusEventBehavior (line 10) | public abstract class LostFocusEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method LostFocus (line 41) | private void LostFocus(object? sender, RoutedEventArgs e)
    method OnLostFocus (line 51) | protected virtual void OnLostFocus(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/PointerCaptureLostEventBehavior.cs
  class PointerCaptureLostEventBehavior (line 10) | public abstract class PointerCaptureLostEventBehavior : Behavior<Interac...
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerCaptureLost (line 41) | private void PointerCaptureLost(object? sender, PointerCaptureLostEven...
    method OnPointerCaptureLost (line 51) | protected virtual void OnPointerCaptureLost(object? sender, PointerCap...

FILE: src/Avalonia.Xaml.Interactions.Events/PointerEnteredEventBehavior.cs
  class PointerEnteredEventBehavior (line 10) | public abstract class PointerEnteredEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerEnter (line 41) | private void PointerEnter(object? sender, PointerEventArgs e)
    method OnPointerEnter (line 51) | protected virtual void OnPointerEnter(object? sender, PointerEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/PointerEventsBehavior.cs
  class PointerEventsBehavior (line 10) | public abstract class PointerEventsBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 41) | protected override void OnDetachedFromVisualTree()
    method PointerPressed (line 51) | private void PointerPressed(object? sender, PointerPressedEventArgs e)
    method PointerReleased (line 56) | private void PointerReleased(object? sender, PointerReleasedEventArgs e)
    method PointerMoved (line 61) | private void PointerMoved(object? sender, PointerEventArgs e)
    method OnPointerPressed (line 71) | protected virtual void OnPointerPressed(object? sender, PointerPressed...
    method OnPointerReleased (line 80) | protected virtual void  OnPointerReleased(object? sender, PointerRelea...
    method OnPointerMoved (line 89) | protected virtual void OnPointerMoved(object? sender, PointerEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/PointerExitedEventBehavior.cs
  class PointerExitedEventBehavior (line 10) | public abstract class PointerExitedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerLeave (line 41) | private void PointerLeave(object? sender, PointerEventArgs e)
    method OnPointerLeave (line 51) | protected virtual void OnPointerLeave(object? sender, PointerEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/PointerMovedEventBehavior.cs
  class PointerMovedEventBehavior (line 10) | public abstract class PointerMovedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerMoved (line 41) | private void PointerMoved(object? sender, PointerEventArgs e)
    method OnPointerMoved (line 51) | protected virtual void OnPointerMoved(object? sender, PointerEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/PointerPressedEventBehavior.cs
  class PointerPressedEventBehavior (line 10) | public abstract class PointerPressedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerPressed (line 41) | private void PointerPressed(object? sender, PointerPressedEventArgs e)
    method OnPointerPressed (line 51) | protected virtual void OnPointerPressed(object? sender, PointerPressed...

FILE: src/Avalonia.Xaml.Interactions.Events/PointerReleasedEventBehavior.cs
  class PointerReleasedEventBehavior (line 10) | public abstract class PointerReleasedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerReleased (line 41) | private void PointerReleased(object? sender, PointerReleasedEventArgs e)
    method OnPointerReleased (line 51) | protected virtual void OnPointerReleased(object? sender, PointerReleas...

FILE: src/Avalonia.Xaml.Interactions.Events/PointerWheelChangedEventBehavior.cs
  class PointerWheelChangedEventBehavior (line 10) | public abstract class PointerWheelChangedEventBehavior : Behavior<Intera...
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method PointerWheelChanged (line 41) | private void PointerWheelChanged(object? sender, PointerWheelEventArgs e)
    method OnPointerWheelChanged (line 51) | protected virtual void OnPointerWheelChanged(object? sender, PointerWh...

FILE: src/Avalonia.Xaml.Interactions.Events/RightTappedEventBehavior.cs
  class RightTappedEventBehavior (line 10) | public abstract class RightTappedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method RightTapped (line 41) | private void RightTapped(object? sender, RoutedEventArgs e)
    method OnRightTapped (line 51) | protected virtual void OnRightTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/ScrollGestureEndedEventBehavior.cs
  class ScrollGestureEndedEventBehavior (line 10) | public abstract class ScrollGestureEndedEventBehavior : Behavior<Interac...
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method ScrollGestureEnded (line 41) | private void ScrollGestureEnded(object? sender, ScrollGestureEventArgs e)
    method OnScrollGestureEnded (line 51) | protected virtual void OnScrollGestureEnded(object? sender, ScrollGest...

FILE: src/Avalonia.Xaml.Interactions.Events/ScrollGestureEventBehavior.cs
  class ScrollGestureEventBehavior (line 10) | public abstract class ScrollGestureEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method ScrollGesture (line 41) | private void ScrollGesture(object? sender, ScrollGestureEventArgs e)
    method OnScrollGesture (line 51) | protected virtual void OnScrollGesture(object? sender, ScrollGestureEv...

FILE: src/Avalonia.Xaml.Interactions.Events/TappedEventBehavior.cs
  class TappedEventBehavior (line 10) | public abstract class TappedEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method Tapped (line 41) | private void Tapped(object? sender, RoutedEventArgs e)
    method OnTapped (line 51) | protected virtual void OnTapped(object? sender, RoutedEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/TextInputEventBehavior.cs
  class TextInputEventBehavior (line 10) | public abstract class TextInputEventBehavior : Behavior<Interactive>
    method OnAttachedToVisualTree (line 30) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 36) | protected override void OnDetachedFromVisualTree()
    method TextInput (line 41) | private void TextInput(object? sender, TextInputEventArgs e)
    method OnTextInput (line 51) | protected virtual void OnTextInput(object? sender, TextInputEventArgs e)

FILE: src/Avalonia.Xaml.Interactions.Events/TextInputMethodClientRequestedEventBehavior.cs
  class TextInputMethodClientRequestedEventBehavior (line 11) | public abstract class TextInputMethodClientRequestedEventBehavior : Beha...
    method OnAttachedToVisualTree (line 31) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 37) | protected override void OnDetachedFromVisualTree()
    method TextInputMethodClientRequested (line 42) | private void TextInputMethodClientRequested(object? sender, TextInputM...
    method OnTextInputMethodClientRequested (line 52) | protected virtual void OnTextInputMethodClientRequested(object? sender...

FILE: src/Avalonia.Xaml.Interactions.Responsive/AdaptiveBehavior.cs
  class AdaptiveBehavior (line 13) | public class AdaptiveBehavior : Behavior<Control>
    method OnAttachedToVisualTree (line 63) | protected override void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 72) | protected override void OnDetachedFromVisualTree()
    method StartObserving (line 79) | private void StartObserving()
    method StopObserving (line 91) | private void StopObserving()
    method ObserveBounds (line 96) | private IDisposable ObserveBounds(Control sourceControl)
    method ValueChanged (line 107) | private void ValueChanged(Control? sourceControl, AvaloniaList<Adaptiv...
    method GetResult (line 161) | private bool GetResult(ComparisonConditionType comparisonConditionType...
    method Add (line 177) | private static void Add(Control targetControl, string? className, bool...
    method Remove (line 194) | private static void Remove(Control targetControl, string? className, b...

FILE: src/Avalonia.Xaml.Interactions.Responsive/AdaptiveClassSetter.cs
  class AdaptiveClassSetter (line 10) | public class AdaptiveClassSetter : AvaloniaObject

FILE: src/Avalonia.Xaml.Interactions/Core/CallMethodAction.cs
  class CallMethodAction (line 17) | public class CallMethodAction : AvaloniaObject, IAction
    method CallMethodAction (line 70) | static CallMethodAction()
    method MethodNameChanged (line 79) | private static void MethodNameChanged(AvaloniaPropertyChangedEventArgs...
    method TargetObjectChanged (line 89) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method Execute (line 111) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method FindBestMethod (line 156) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method UpdateTargetType (line 185) | private void UpdateTargetType(Type newTargetType)
    method UpdateMethodDescriptors (line 197) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    class MethodDescriptor (line 251) | [RequiresUnreferencedCode("This functionality is not compatible with t...

FILE: src/Avalonia.Xaml.Interactions/Core/ChangePropertyAction.cs
  class ChangePropertyAction (line 14) | public class ChangePropertyAction : AvaloniaObject, IAction
    method GetTypeByName (line 19) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method FindAttachedProperty (line 34) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method Execute (line 127) | public virtual object Execute(object? sender, object? parameter)
    method UpdatePropertyValue (line 172) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method UpdateAvaloniaPropertyValue (line 244) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method ValidateAvaloniaProperty (line 300) | private void ValidateAvaloniaProperty(AvaloniaProperty? property)

FILE: src/Avalonia.Xaml.Interactions/Core/DataTriggerBehavior.cs
  class DataTriggerBehavior (line 12) | public class DataTriggerBehavior : Trigger
    method DataTriggerBehavior (line 59) | static DataTriggerBehavior()
    method Compare (line 71) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method EvaluateComparable (line 127) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method OnValueChanged (line 162) | private static void OnValueChanged(AvaloniaPropertyChangedEventArgs args)

FILE: src/Avalonia.Xaml.Interactions/Core/EventTriggerBehavior.cs
  class EventTriggerBehavior (line 14) | public class EventTriggerBehavior : Trigger
    method EventTriggerBehavior (line 54) | static EventTriggerBehavior()
    method EventNameChanged (line 63) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method SourceObjectChanged (line 90) | private static void SourceObjectChanged(AvaloniaPropertyChangedEventAr...
    method OnAttached (line 101) | protected override void OnAttached()
    method OnDetaching (line 110) | protected override void OnDetaching()
    method SetResolvedSource (line 116) | private void SetResolvedSource(object? newSource)
    method ComputeResolvedSource (line 136) | private object? ComputeResolvedSource()
    method RegisterEvent (line 148) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method UnregisterEvent (line 198) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method AttachedToVisualTree (line 235) | protected virtual void AttachedToVisualTree(object? sender, object eve...
    method IsElementLoaded (line 240) | private static bool IsElementLoaded(Control element) => element.Parent...

FILE: src/Avalonia.Xaml.Interactions/Core/InvokeCommandAction.cs
  class InvokeCommandAction (line 10) | public class InvokeCommandAction : AvaloniaObject, IAction
    method Execute (line 122) | public virtual object Execute(object? sender, object? parameter)

FILE: src/Avalonia.Xaml.Interactivity/ActionCollection.cs
  class ActionCollection (line 10) | public class ActionCollection : AvaloniaList<AvaloniaObject>
    method ActionCollection (line 15) | public ActionCollection()
    method ActionCollection_CollectionChanged (line 20) | private void ActionCollection_CollectionChanged(object? sender, Notify...
    method VerifyType (line 39) | private static void VerifyType(AvaloniaObject? item)

FILE: src/Avalonia.Xaml.Interactivity/Behavior.cs
  class Behavior (line 11) | public abstract class Behavior : AvaloniaObject, IBehavior
    method Attach (line 23) | public void Attach(AvaloniaObject? associatedObject)
    method Detach (line 46) | public void Detach()
    method OnAttached (line 58) | protected virtual void OnAttached()
    method OnDetaching (line 68) | protected virtual void OnDetaching()
    method AttachedToVisualTree (line 72) | internal void AttachedToVisualTree()
    method DetachedFromVisualTree (line 77) | internal void DetachedFromVisualTree()
    method OnAttachedToVisualTree (line 88) | protected virtual void OnAttachedToVisualTree()
    method OnDetachedFromVisualTree (line 98) | protected virtual void OnDetachedFromVisualTree()

FILE: src/Avalonia.Xaml.Interactivity/BehaviorCollection.cs
  class BehaviorCollection (line 12) | public class BehaviorCollection : AvaloniaList<AvaloniaObject>
    method BehaviorCollection (line 21) | public BehaviorCollection()
    method Attach (line 40) | public void Attach(AvaloniaObject? associatedObject)
    method Detach (line 66) | public void Detach()
    method AttachedToVisualTree (line 80) | internal void AttachedToVisualTree()
    method DetachedFromVisualTree (line 91) | internal void DetachedFromVisualTree()
    method BehaviorCollection_CollectionChanged (line 102) | private void BehaviorCollection_CollectionChanged(object? sender, Noti...
    method VerifiedAttach (line 178) | private IBehavior VerifiedAttach(AvaloniaObject? item)
    method VerifyOldCollectionIntegrity (line 200) | [Conditional("DEBUG")]

FILE: src/Avalonia.Xaml.Interactivity/BehaviorCollectionTemplate.cs
  class BehaviorCollectionTemplate (line 10) | public class BehaviorCollectionTemplate : ITemplate
    method Build (line 23) | object? ITemplate.Build() => TemplateContent.Load<BehaviorCollection>(...

FILE: src/Avalonia.Xaml.Interactivity/BehaviorOfT.cs
  class Behavior (line 11) | public abstract class Behavior<T> : Behavior where T : AvaloniaObject
    method OnAttached (line 24) | [RequiresUnreferencedCode("This functionality is not compatible with t...

FILE: src/Avalonia.Xaml.Interactivity/ComparisonConditionType.cs
  type ComparisonConditionType (line 6) | public enum ComparisonConditionType

FILE: src/Avalonia.Xaml.Interactivity/IAction.cs
  type IAction (line 6) | public interface IAction
    method Execute (line 15) | object? Execute(object? sender, object? parameter);

FILE: src/Avalonia.Xaml.Interactivity/IBehavior.cs
  type IBehavior (line 6) | public interface IBehavior
    method Attach (line 17) | void Attach(AvaloniaObject? associatedObject);
    method Detach (line 22) | void Detach();

FILE: src/Avalonia.Xaml.Interactivity/ITrigger.cs
  type ITrigger (line 6) | public interface ITrigger : IBehavior

FILE: src/Avalonia.Xaml.Interactivity/Interaction.cs
  class Interaction (line 12) | public class Interaction
    method Interaction (line 14) | static Interaction()
    method GetBehaviors (line 31) | public static BehaviorCollection GetBehaviors(AvaloniaObject obj)
    method SetBehaviors (line 54) | public static void SetBehaviors(AvaloniaObject obj, BehaviorCollection...
    method ExecuteActions (line 70) | public static IEnumerable<object> ExecuteActions(object? sender, Actio...
    method BehaviorsChanged (line 96) | private static void BehaviorsChanged(AvaloniaPropertyChangedEventArgs<...
    method SetVisualTreeEventHandlersInitial (line 118) | private static void SetVisualTreeEventHandlersInitial(AvaloniaObject obj)
    method SetVisualTreeEventHandlersRuntime (line 135) | private static void SetVisualTreeEventHandlersRuntime(AvaloniaObject obj)
    method Control_AttachedToVisualTreeInitial (line 152) | private static void Control_AttachedToVisualTreeInitial(object? sender...
    method Control_DetachedFromVisualTreeInitial (line 161) | private static void Control_DetachedFromVisualTreeInitial(object? send...
    method Control_AttachedToVisualTreeRuntime (line 170) | private static void Control_AttachedToVisualTreeRuntime(object? sender...
    method Control_DetachedFromVisualTreeRuntime (line 178) | private static void Control_DetachedFromVisualTreeRuntime(object? send...

FILE: src/Avalonia.Xaml.Interactivity/System/Diagnostics/CodeAnalysis/TrimmingAttributes.cs
  class DynamicallyAccessedMembersAttribute (line 12) | [AttributeUsage(
    method DynamicallyAccessedMembersAttribute (line 19) | public DynamicallyAccessedMembersAttribute(DynamicallyAccessedMemberTy...
  type DynamicallyAccessedMemberTypes (line 27) | [Flags]
  class DynamicDependencyAttribute (line 48) | [AttributeUsage(
    method DynamicDependencyAttribute (line 53) | public DynamicDependencyAttribute(string memberSignature)
    method DynamicDependencyAttribute (line 58) | public DynamicDependencyAttribute(string memberSignature, Type type)
    method DynamicDependencyAttribute (line 64) | public DynamicDependencyAttribute(string memberSignature, string typeN...
    method DynamicDependencyAttribute (line 71) | public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes membe...
    method DynamicDependencyAttribute (line 77) | public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes membe...
  class RequiresUnreferencedCodeAttribute (line 92) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor |...
    method RequiresUnreferencedCodeAttribute (line 95) | public RequiresUnreferencedCodeAttribute(string message)
  class UnconditionalSuppressMessageAttribute (line 104) | [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple =...
    method UnconditionalSuppressMessageAttribute (line 107) | public UnconditionalSuppressMessageAttribute(string category, string c...

FILE: src/Avalonia.Xaml.Interactivity/Trigger.cs
  class Trigger (line 8) | public abstract class Trigger : Behavior, ITrigger

FILE: src/Avalonia.Xaml.Interactivity/TriggerOfT.cs
  class Trigger (line 10) | public abstract class Trigger<T> : Trigger where T : AvaloniaObject
    method OnAttached (line 24) | [RequiresUnreferencedCode("This functionality is not compatible with t...

FILE: src/Avalonia.Xaml.Interactivity/TypeConverterHelper.cs
  class TypeConverterHelper (line 12) | internal static class TypeConverterHelper
    method Convert (line 21) | [RequiresUnreferencedCode("This functionality is not compatible with t...
    method GetScope (line 86) | private static string GetScope(string name)

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/App.axaml.cs
  class App (line 7) | public class App : Application
    method Initialize (line 9) | public override void Initialize()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/CallMethodAction001.axaml.cs
  class CallMethodAction001 (line 5) | public partial class CallMethodAction001 : Window
    method CallMethodAction001 (line 9) | public CallMethodAction001()
    method TestMethod (line 14) | public void TestMethod()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/CallMethodAction002.axaml.cs
  class CallMethodAction002 (line 6) | public partial class CallMethodAction002 : Window
    method CallMethodAction002 (line 14) | public CallMethodAction002()
    method TestMethod (line 19) | public void TestMethod(object? sender, EventArgs args)

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/CallMethodActionTests.cs
  class CallMethodActionTests (line 12) | [UsesVerify]
    method CallMethodAction_001 (line 18) | [AvaloniaFact]
    method CallMethodAction_002 (line 41) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/ChangePropertyAction001.axaml.cs
  class ChangePropertyAction001 (line 5) | public partial class ChangePropertyAction001 : Window
    method ChangePropertyAction001 (line 7) | public ChangePropertyAction001()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/ChangePropertyAction002.axaml.cs
  class ChangePropertyAction002 (line 5) | public partial class ChangePropertyAction002 : Window
    method ChangePropertyAction002 (line 7) | public ChangePropertyAction002()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/ChangePropertyActionTests.cs
  class ChangePropertyActionTests (line 10) | [UsesVerify]
    method ChangePropertyAction_001 (line 16) | [AvaloniaFact]
    method ChangePropertyAction_002 (line 37) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/Command.cs
  class Command (line 6) | internal class Command(Action<object?> execute, Func<object?, bool>? can...
    method CanExecute (line 9) | public bool CanExecute(object? parameter)
    method Execute (line 14) | public void Execute(object? parameter)

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/DataTriggerBehavior001.axaml.cs
  class DataTriggerBehavior001 (line 5) | public partial class DataTriggerBehavior001 : Window
    method DataTriggerBehavior001 (line 7) | public DataTriggerBehavior001()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/DataTriggerBehaviorTests.cs
  class DataTriggerBehaviorTests (line 10) | [UsesVerify]
    method DataTriggerBehavior_001 (line 13) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/EventTriggerBehavior001.axaml.cs
  class EventTriggerBehavior001 (line 5) | public partial class EventTriggerBehavior001 : Window
    method EventTriggerBehavior001 (line 7) | public EventTriggerBehavior001()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/EventTriggerBehavior002.axaml.cs
  class EventTriggerBehavior002 (line 5) | public partial class EventTriggerBehavior002 : Window
    method EventTriggerBehavior002 (line 7) | public EventTriggerBehavior002()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/EventTriggerBehavior003.axaml.cs
  class EventTriggerBehavior003 (line 5) | public partial class EventTriggerBehavior003 : Window
    method EventTriggerBehavior003 (line 7) | public EventTriggerBehavior003()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/EventTriggerBehavior004.axaml.cs
  class EventTriggerBehavior004 (line 5) | public partial class EventTriggerBehavior004 : Window
    method EventTriggerBehavior004 (line 7) | public EventTriggerBehavior004()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/EventTriggerBehaviorTests.cs
  class EventTriggerBehaviorTests (line 9) | [UsesVerify]
    method EventTriggerBehavior_001 (line 12) | [AvaloniaFact]
    method EventTriggerBehavior_002 (line 28) | [AvaloniaFact]
    method EventTriggerBehavior_003 (line 44) | [AvaloniaFact]
    method EventTriggerBehavior_004 (line 61) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/InvokeCommandAction001.axaml.cs
  class InvokeCommandAction001 (line 6) | public partial class InvokeCommandAction001 : Window
    method InvokeCommandAction001 (line 10) | public InvokeCommandAction001()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/InvokeCommandAction002.axaml.cs
  class InvokeCommandAction002 (line 6) | public partial class InvokeCommandAction002 : Window
    method InvokeCommandAction002 (line 10) | public InvokeCommandAction002()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/InvokeCommandAction003.axaml.cs
  class InvokeCommandAction003 (line 6) | public partial class InvokeCommandAction003 : Window
    method InvokeCommandAction003 (line 10) | public InvokeCommandAction003()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/InvokeCommandAction004.axaml.cs
  class InvokeCommandAction004 (line 6) | public partial class InvokeCommandAction004 : Window
    method InvokeCommandAction004 (line 10) | public InvokeCommandAction004()

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/InvokeCommandActionTests.cs
  class InvokeCommandActionTests (line 12) | [UsesVerify]
    method InvokeCommandAction_001 (line 15) | [AvaloniaFact]
    method InvokeCommandAction_002 (line 35) | [AvaloniaFact]
    method InvokeCommandAction_003 (line 55) | [AvaloniaFact]
    method InvokeCommandAction_004 (line 75) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/Core/TestValueConverter.cs
  class TestValueConverter (line 8) | internal class TestValueConverter : IValueConverter
    method Convert (line 12) | public object? Convert(object? value, Type targetType, object? paramet...
    method ConvertBack (line 22) | public object? ConvertBack(object? value, Type targetType, object? par...

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/HeadlessWindowExtensions.cs
  class HeadlessWindowExtensions (line 10) | internal static class HeadlessWindowExtensions
    method Click (line 15) | public static void Click(
    method MouseDown (line 33) | public static void MouseDown(
    method MouseMove (line 50) | public static void MouseMove(
    method MouseUp (line 66) | public static void MouseUp(
    method MouseWheel (line 83) | public static void MouseWheel(

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/ModuleInit.cs
  class ModuleInit (line 4) | public static class ModuleInit
    method InitOther (line 6) | [ModuleInitializer]

FILE: tests/Avalonia.Xaml.Interactions.UnitTests/TestAppBuilder.cs
  class TestAppBuilder (line 8) | public class TestAppBuilder
    method BuildAvaloniaApp (line 10) | public static AppBuilder BuildAvaloniaApp()

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/App.axaml.cs
  class App (line 7) | public class App : Application
    method Initialize (line 9) | public override void Initialize()

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/BehaviorCollectionTemplate001.axaml.cs
  class BehaviorCollectionTemplate001 (line 5) | public partial class BehaviorCollectionTemplate001 : Window
    method BehaviorCollectionTemplate001 (line 7) | public BehaviorCollectionTemplate001()

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/BehaviorCollectionTemplateTests.cs
  class BehaviorCollectionTemplateTests (line 12) | public class BehaviorCollectionTemplateTests
    method BehaviorCollectionTemplate_001 (line 14) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/BehaviorCollectionTest.cs
  class BehaviorCollectionTest (line 8) | public class BehaviorCollectionTest
    method VectorChanged_NonBehaviorAdded_ExceptionThrown (line 10) | [AvaloniaFact]
    method VectorChanged_BehaviorChangedToNonBehavior_ExceptionThrown (line 19) | [AvaloniaFact]
    method VectorChanged_DuplicateAdd_ExceptionThrown (line 28) | [AvaloniaFact]
    method VectorChanged_AddWhileNotAttached_AttachNotCalled (line 39) | [AvaloniaFact]
    method VectorChanged_AddWhileAttached_AllAttached (line 49) | [AvaloniaFact]
    method VectorChanged_ReplaceWhileAttached_OldDetachedNewAttached (line 65) | [AvaloniaFact]
    method VectorChanged_RemoveWhileNotAttached_DetachNotCalled (line 83) | [AvaloniaFact]
    method VectorChanged_RemoveWhileAttached_Detached (line 95) | [AvaloniaFact]
    method VectorChanged_ResetWhileNotAttached_DetachNotCalled (line 108) | [AvaloniaFact]
    method VectorChanged_ResetWhileAttached_AllDetached (line 127) | [AvaloniaFact]
    method Attach_MultipleBehaviors_AllAttached (line 148) | [AvaloniaFact]
    method Attach_Null_AttachNotCalledOnItems (line 167) | [AvaloniaFact]
    method Attach_MultipleObjects_ExceptionThrown (line 183) | [AvaloniaFact]
    method Attach_NonNullThenNull_ExceptionThrown (line 193) | [AvaloniaFact]
    method Attach_MultipleTimeSameObject_AttachCalledOnce (line 204) | [AvaloniaFact]
    method Detach_NotAttached_DetachNotCalledOnItems (line 217) | [AvaloniaFact]
    method Detach_Attached_AllItemsDetached (line 227) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/BehaviorOfTTests.cs
  class BehaviorOfTTests (line 3) | public class BehaviorOfTTests

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/BehaviorTests.cs
  class BehaviorTests (line 3) | public class BehaviorTests

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/InteractionTest.cs
  class InteractionTest (line 8) | public class InteractionTest
    method SetBehaviors_MultipleBehaviors_AllAttached (line 10) | [AvaloniaFact]
    method SetBehaviors_MultipleSets_DoesNotReattach (line 31) | [AvaloniaFact]
    method SetBehaviors_CollectionThenNull_DeatchCollection (line 46) | [AvaloniaFact]
    method SetBehaviors_NullThenNull_NoOp (line 62) | [AvaloniaFact]
    method SetBehaviors_ManualDetachThenNull_DoesNotDoubleDetach (line 73) | [AvaloniaFact]
    method ExecuteActions_NullParameters_ReturnsEmptyEnumerable (line 100) | [AvaloniaFact]
    method ExecuteActions_MultipleActions_AllActionsExecuted (line 110) | [AvaloniaFact]
    method ExecuteActions_ActionsWithResults_ResultsInActionOrder (line 133) | [AvaloniaFact]

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/InteractionTests.cs
  class InteractionTests (line 3) | public class InteractionTests

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/StubAction.cs
  class StubAction (line 3) | public class StubAction(object? returnValue) : AvaloniaObject, IAction
    method StubAction (line 5) | public StubAction() : this(null)
    method Execute (line 27) | public object? Execute(object? sender, object? parameter)

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/StubBehavior.cs
  class StubBehavior (line 5) | public class StubBehavior : AvaloniaObject, IBehavior
    method Attach (line 27) | public void Attach(AvaloniaObject? avaloniaObject)
    method Detach (line 33) | public void Detach()
    method Execute (line 39) | public IEnumerable<object> Execute(object? sender, object parameter)

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/TestAppBuilder.cs
  class TestAppBuilder (line 8) | public class TestAppBuilder
    method BuildAvaloniaApp (line 10) | public static AppBuilder BuildAvaloniaApp()

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/TestUitilties.cs
  class TestUtilities (line 6) | public static class TestUtilities
    method AssertThrowsInvalidOperationException (line 11) | public static void AssertThrowsInvalidOperationException(Action action)
    method AssertThrowsArgumentException (line 16) | public static void AssertThrowsArgumentException(Action action)
    method AssertDetached (line 21) | public static void AssertDetached(StubBehavior behavior)
    method AssertNotDetached (line 27) | public static void AssertNotDetached(StubBehavior behavior)
    method AssertAttached (line 32) | public static void AssertAttached(StubBehavior behavior, AvaloniaObjec...
    method AssertNotAttached (line 38) | public static void AssertNotAttached(StubBehavior behavior)

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/TriggerOfTTests.cs
  class TriggerOfTTests (line 3) | public class TriggerOfTTests

FILE: tests/Avalonia.Xaml.Interactivity.UnitTests/TriggerTests.cs
  class TriggerTests (line 3) | public class TriggerTests
Condensed preview — 337 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (594K chars).
[
  {
    "path": ".editorconfig",
    "chars": 6153,
    "preview": "# editorconfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Default settings:\n# A newline ending every file\n# Use 4 "
  },
  {
    "path": ".gitattributes",
    "chars": 572,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp\n\n# St"
  },
  {
    "path": ".github/.github/stale.yml",
    "chars": 729,
    "preview": "# https://probot.github.io/apps/stale/\n\n# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 60\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 24,
    "preview": "github: [wieslawsoltes]\n"
  },
  {
    "path": ".github/stale.yml",
    "chars": 726,
    "preview": "# https://probot.github.io/apps/stale/\n\n# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 60\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 527,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n    - master\n    - release/*\n  pull_request:\n    branches:\n    - master\n\njobs:\n  bui"
  },
  {
    "path": ".gitignore",
    "chars": 4876,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": ".nuke/build.schema.json",
    "chars": 3508,
    "preview": "{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\": \"Build Schema\",\n  \"$ref\": \"#/definitions/build\",\n  "
  },
  {
    "path": ".nuke/parameters.json",
    "chars": 77,
    "preview": "{\n  \"$schema\": \"./build.schema.json\",\n  \"Solution\": \"AvaloniaBehaviors.sln\"\n}"
  },
  {
    "path": "AvaloniaBehaviors.sln",
    "chars": 12061,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.28315"
  },
  {
    "path": "Directory.Build.props",
    "chars": 597,
    "preview": "<Project>\n  <PropertyGroup>\n    <VersionPrefix>11.0.10.8</VersionPrefix>\n    <VersionSuffix></VersionSuffix>\n    <Autho"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 1088,
    "preview": "<Project>\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <AvaloniaVers"
  },
  {
    "path": "LICENSE.TXT",
    "chars": 1077,
    "preview": "The MIT License (MIT)\n\nCopyright (c) Wiesław Šoltés\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "NuGet.Config",
    "chars": 203,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"api.nuget.org\" v"
  },
  {
    "path": "README.md",
    "chars": 3440,
    "preview": "# Repository was moved!\n\nNew location is https://github.com/wieslawsoltes/Avalonia.Xaml.Behaviors\n\n# Avalonia XAML Behav"
  },
  {
    "path": "_config.yml",
    "chars": 26,
    "preview": "theme: jekyll-theme-cayman"
  },
  {
    "path": "azure-pipelines.yml",
    "chars": 2559,
    "preview": "name: $(date:yyyyMMdd)$(rev:-rr)\n\nresources:\n  repositories:\n    - repository: templates\n      endpoint: wieslawsoltes\n "
  },
  {
    "path": "build/SignAssembly.props",
    "chars": 431,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msb"
  },
  {
    "path": "build/SourceLink.props",
    "chars": 960,
    "preview": "<Project>\n  <PropertyGroup>\n    <PublishRepositoryUrl>true</PublishRepositoryUrl>\n    <IncludeSymbols>false</IncludeSymb"
  },
  {
    "path": "build/XUnit.props",
    "chars": 662,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/ms"
  },
  {
    "path": "build/build/Build.cs",
    "chars": 3850,
    "preview": "using System.Collections.Generic;\nusing Nuke.Common;\nusing Nuke.Common.Git;\nusing Nuke.Common.ProjectModel;\nusing Nuke.C"
  },
  {
    "path": "build/build/_build.csproj",
    "chars": 736,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net8.0</Targe"
  },
  {
    "path": "build.cmd",
    "chars": 207,
    "preview": ":; set -eo pipefail\n:; SCRIPT_DIR=$(cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd)\n:; ${SCRIPT_DIR}/build.sh \"$@\"\n:; exit"
  },
  {
    "path": "build.ps1",
    "chars": 2964,
    "preview": "[CmdletBinding()]\nParam(\n    [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]\n    [string[]]$B"
  },
  {
    "path": "build.sh",
    "chars": 2286,
    "preview": "#!/usr/bin/env bash\n\nbash --version 2>&1 | head -n 1\n\nset -eo pipefail\nSCRIPT_DIR=$(cd \"$( dirname \"${BASH_SOURCE[0]}\" )"
  },
  {
    "path": "global.json",
    "chars": 107,
    "preview": "{\n  \"sdk\": {\n    \"version\": \"8.0.100\",\n    \"rollForward\": \"latestMinor\",\n    \"allowPrerelease\": true\n  }\n}\n"
  },
  {
    "path": "samples/BehaviorsTestApplication/App.axaml",
    "chars": 1325,
    "preview": "<Application xmlns=\"https://github.com/avaloniaui\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n "
  },
  {
    "path": "samples/BehaviorsTestApplication/App.axaml.cs",
    "chars": 756,
    "preview": "using Avalonia;\nusing Avalonia.Controls.ApplicationLifetimes;\nusing Avalonia.Markup.Xaml;\nusing BehaviorsTestApplicatio"
  },
  {
    "path": "samples/BehaviorsTestApplication/BehaviorsTestApplication.csproj",
    "chars": 1570,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net8.0</T"
  },
  {
    "path": "samples/BehaviorsTestApplication/Converters/ClassesToStringConverter.cs",
    "chars": 640,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing Avalonia;\nusing Avalonia.Controls;\nus"
  },
  {
    "path": "samples/BehaviorsTestApplication/Program.cs",
    "chars": 635,
    "preview": "using System;\nusing Avalonia;\nusing Avalonia.ReactiveUI;\nusing Avalonia.Xaml.Interactions.Core;\nusing Avalonia.Xaml.Int"
  },
  {
    "path": "samples/BehaviorsTestApplication/SideBar.axaml",
    "chars": 2183,
    "preview": "<Styles xmlns=\"https://github.com/avaloniaui\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n    <Desig"
  },
  {
    "path": "samples/BehaviorsTestApplication/ViewModels/Core/ViewModelBase.cs",
    "chars": 129,
    "preview": "using ReactiveUI;\n\nnamespace BehaviorsTestApplication.ViewModels.Core;\n\npublic abstract class ViewModelBase : ReactiveO"
  },
  {
    "path": "samples/BehaviorsTestApplication/ViewModels/ItemViewModel.cs",
    "chars": 585,
    "preview": "using System.Collections.ObjectModel;\nusing BehaviorsTestApplication.ViewModels.Core;\nusing ReactiveUI;\n\nnamespace Beha"
  },
  {
    "path": "samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs",
    "chars": 3521,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Reactive.Linq;\nusing"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/ItemView.axaml",
    "chars": 2088,
    "preview": "<UserControl xmlns=\"https://github.com/avaloniaui\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/ItemView.axaml.cs",
    "chars": 318,
    "preview": "using Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views;\n\npublic"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/MainView.axaml",
    "chars": 2478,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.MainView\"\n             xmlns=\"https://github.com/avaloniaui\"\n     "
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/MainView.axaml.cs",
    "chars": 302,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views;\n\npublic partial class M"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/MainWindow.axaml",
    "chars": 333,
    "preview": "<Window x:Class=\"BehaviorsTestApplication.Views.MainWindow\"\n        xmlns=\"https://github.com/avaloniaui\"\n        xmlns:"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/MainWindow.axaml.cs",
    "chars": 440,
    "preview": "using BehaviorsTestApplication.ViewModels;\nusing Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamesp"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AdaptiveBehaviorView.axaml",
    "chars": 6645,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.AdaptiveBehaviorView\"\n             xmlns=\"https://github.com"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AdaptiveBehaviorView.axaml.cs",
    "chars": 332,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AddRemoveClassActionView.axaml",
    "chars": 2558,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.AddRemoveClassActionView\"\n             xmlns=\"https://github"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AddRemoveClassActionView.axaml.cs",
    "chars": 340,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AdvancedView.axaml",
    "chars": 2740,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.AdvancedView\"\n             xmlns=\"https://github.com/avaloni"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/AdvancedView.axaml.cs",
    "chars": 316,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ButtonClickEventTriggerBehaviorView.axaml",
    "chars": 2073,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.ButtonClickEventTriggerBehaviorView\"\n             xmlns=\"htt"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ButtonClickEventTriggerBehaviorView.axaml.cs",
    "chars": 362,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CallMethodActionView.axaml",
    "chars": 2576,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.CallMethodActionView\"\n             xmlns=\"https://github.com"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CallMethodActionView.axaml.cs",
    "chars": 332,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ChangeAvaloniaPropertyActionView.axaml",
    "chars": 2747,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.ChangeAvaloniaPropertyActionView\"\n             xmlns=\"https:"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ChangeAvaloniaPropertyActionView.axaml.cs",
    "chars": 356,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ChangePropertyActionView.axaml",
    "chars": 2213,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.ChangePropertyActionView\"\n             xmlns=\"https://github"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ChangePropertyActionView.axaml.cs",
    "chars": 340,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CustomActionView.axaml",
    "chars": 2554,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.CustomActionView\"\n             xmlns=\"https://github.com/ava"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CustomActionView.axaml.cs",
    "chars": 324,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CustomBehaviorView.axaml",
    "chars": 2512,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.CustomBehaviorView\"\n             xmlns=\"https://github.com/a"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/CustomBehaviorView.axaml.cs",
    "chars": 328,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/DataTriggerBehaviorView.axaml",
    "chars": 2536,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.DataTriggerBehaviorView\"\n             xmlns=\"https://github."
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/DataTriggerBehaviorView.axaml.cs",
    "chars": 338,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EditableListBoxView.axaml",
    "chars": 1232,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.EditableListBoxView\"\n             xmlns=\"https://github.com/"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EditableListBoxView.axaml.cs",
    "chars": 330,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EditableTreeViewView.axaml",
    "chars": 1295,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.EditableTreeViewView\"\n             xmlns=\"https://github.com"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EditableTreeViewView.axaml.cs",
    "chars": 332,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EventTriggerBehaviorView.axaml",
    "chars": 1372,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.EventTriggerBehaviorView\"\n             xmlns=\"https://github"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/EventTriggerBehaviorView.axaml.cs",
    "chars": 340,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/InvokeCommandActionView.axaml",
    "chars": 2623,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.InvokeCommandActionView\"\n             xmlns=\"https://github."
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/InvokeCommandActionView.axaml.cs",
    "chars": 338,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/RoutedEventTriggerBehaviorView.axaml",
    "chars": 2738,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.RoutedEventTriggerBehaviorView\"\n             xmlns=\"https://"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/RoutedEventTriggerBehaviorView.axaml.cs",
    "chars": 352,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ValueChangedTriggerBehaviorView.axaml",
    "chars": 1500,
    "preview": "<UserControl x:Class=\"BehaviorsTestApplication.Views.Pages.ValueChangedTriggerBehaviorView\"\n             xmlns=\"https:/"
  },
  {
    "path": "samples/BehaviorsTestApplication/Views/Pages/ValueChangedTriggerBehaviorView.axaml.cs",
    "chars": 354,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace BehaviorsTestApplication.Views.Pages;\n\npublic partial c"
  },
  {
    "path": "samples/Directory.Packages.props",
    "chars": 1040,
    "preview": "<Project>\n  <PropertyGroup>\n    <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n    <AvaloniaVers"
  },
  {
    "path": "samples/DragAndDropSample/App.axaml",
    "chars": 551,
    "preview": "<Application xmlns=\"https://github.com/avaloniaui\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n "
  },
  {
    "path": "samples/DragAndDropSample/App.axaml.cs",
    "chars": 634,
    "preview": "using Avalonia;\nusing Avalonia.Controls.ApplicationLifetimes;\nusing Avalonia.Markup.Xaml;\nusing DragAndDropSample.ViewMo"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/BaseDataGridDropHandler.cs",
    "chars": 5869,
    "preview": "using System.Collections.ObjectModel;\nusing Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/ContextDragWithDirectionBehavior.cs",
    "chars": 6674,
    "preview": "using System;\nusing System.Threading.Tasks;\nusing Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Input;\nusing Avaloni"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/ItemsDataGridDropHandler.cs",
    "chars": 995,
    "preview": "using System.Collections.ObjectModel;\nusing Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.VisualTree;\nusing Dr"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/ItemsListBoxDropHandler.cs",
    "chars": 2501,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.VisualTree;\nusing Avalonia.Xaml.Interactions.DragAndDrop;\n"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/NodesListBoxDropHandler.cs",
    "chars": 2501,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.VisualTree;\nusing Avalonia.Xaml.Interactions.DragAndDrop;\n"
  },
  {
    "path": "samples/DragAndDropSample/Behaviors/NodesTreeViewDropHandler.cs",
    "chars": 3722,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.VisualTree;\nusing Avalonia.Xaml.Interactions.DragAndDrop;\n"
  },
  {
    "path": "samples/DragAndDropSample/DragAndDropSample.csproj",
    "chars": 1213,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net8.0</T"
  },
  {
    "path": "samples/DragAndDropSample/Program.cs",
    "chars": 945,
    "preview": "using System;\nusing Avalonia;\nusing Avalonia.Controls.ApplicationLifetimes;\nusing Avalonia.ReactiveUI;\nusing Avalonia.X"
  },
  {
    "path": "samples/DragAndDropSample/ViewLocator.cs",
    "chars": 665,
    "preview": "using System;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Templates;\nusing DragAndDropSample.ViewModels;\n\nnamespace"
  },
  {
    "path": "samples/DragAndDropSample/ViewModels/ItemViewModel.cs",
    "chars": 308,
    "preview": "using ReactiveUI;\n\nnamespace DragAndDropSample.ViewModels;\n\npublic class ItemViewModel : ViewModelBase\n{\n    private st"
  },
  {
    "path": "samples/DragAndDropSample/ViewModels/MainWindowViewModel.cs",
    "chars": 2060,
    "preview": "using System.Collections.ObjectModel;\nusing ReactiveUI;\n\nnamespace DragAndDropSample.ViewModels;\n\npublic class MainWind"
  },
  {
    "path": "samples/DragAndDropSample/ViewModels/NodeViewModel.cs",
    "chars": 721,
    "preview": "using System.Collections.ObjectModel;\nusing ReactiveUI;\n\nnamespace DragAndDropSample.ViewModels;\n\npublic class NodeViewM"
  },
  {
    "path": "samples/DragAndDropSample/ViewModels/ViewModelBase.cs",
    "chars": 108,
    "preview": "using ReactiveUI;\n\nnamespace DragAndDropSample.ViewModels;\n\npublic class ViewModelBase : ReactiveObject\n{\n}"
  },
  {
    "path": "samples/DragAndDropSample/Views/MainWindow.axaml",
    "chars": 8855,
    "preview": "<Window xmlns=\"https://github.com/avaloniaui\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xml"
  },
  {
    "path": "samples/DragAndDropSample/Views/MainWindow.axaml.cs",
    "chars": 357,
    "preview": "using Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Markup.Xaml;\n\nnamespace DragAndDropSample.Views;\n\npublic partial"
  },
  {
    "path": "samples/DraggableDemo/App.axaml",
    "chars": 320,
    "preview": "<Application xmlns=\"https://github.com/avaloniaui\"\n             xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n "
  },
  {
    "path": "samples/DraggableDemo/App.axaml.cs",
    "chars": 522,
    "preview": "using Avalonia;\nusing Avalonia.Controls.ApplicationLifetimes;\nusing Avalonia.Markup.Xaml;\n\nnamespace DraggableDemo;\n\npub"
  },
  {
    "path": "samples/DraggableDemo/DraggableDemo.csproj",
    "chars": 1147,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>WinExe</OutputType>\n    <TargetFramework>net8.0</T"
  },
  {
    "path": "samples/DraggableDemo/MainWindow.axaml",
    "chars": 8869,
    "preview": "<Window xmlns=\"https://github.com/avaloniaui\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xml"
  },
  {
    "path": "samples/DraggableDemo/MainWindow.axaml.cs",
    "chars": 1813,
    "preview": "using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing Avalonia;\nusing Avalonia.Controls;\nusing A"
  },
  {
    "path": "samples/DraggableDemo/Models/Item.cs",
    "chars": 213,
    "preview": "namespace DraggableDemo.Models;\n\npublic class Item\n{\n    public string? Title { get; set; }\n\n    public double X { get; "
  },
  {
    "path": "samples/DraggableDemo/Models/Tile.cs",
    "chars": 338,
    "preview": "namespace DraggableDemo.Models;\n\npublic class Tile\n{\n    public string? Title { get; set; }\n\n    public int Column { get"
  },
  {
    "path": "samples/DraggableDemo/Program.cs",
    "chars": 543,
    "preview": "using System;\nusing Avalonia;\nusing Avalonia.Xaml.Interactions.Core;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Drag"
  },
  {
    "path": "samples/DraggableDemo/Styles/Custom.axaml",
    "chars": 3750,
    "preview": "<Styles xmlns=\"https://github.com/avaloniaui\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n\n  <Styles"
  },
  {
    "path": "src/Avalonia.Xaml.Behaviors/Avalonia.Xaml.Behaviors.csproj",
    "chars": 1735,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramewor"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Avalonia.Xaml.Interactions.csproj",
    "chars": 1101,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramewor"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Core/CallMethodAction.cs",
    "chars": 9415,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusing "
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Core/ChangePropertyAction.cs",
    "chars": 11210,
    "preview": "using System;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Globalization;\nusing System.Linq;\nusing System.Reflec"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Core/DataTriggerBehavior.cs",
    "chars": 7464,
    "preview": "using System;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Globalization;\nusing Avalonia.Reactive;\nusing Avaloni"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Core/EventTriggerBehavior.cs",
    "chars": 7709,
    "preview": "using System;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Globalization;\nusing System.Reflection;\nusing Avaloni"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Core/InvokeCommandAction.cs",
    "chars": 6155,
    "preview": "using System.Windows.Input;\nusing Avalonia.Xaml.Interactivity;\nusing Avalonia.Data.Converters;\n\nnamespace Avalonia.Xaml"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions/Properties/AssemblyInfo.cs",
    "chars": 657,
    "preview": "using System.Runtime.CompilerServices;\nusing Avalonia.Metadata;\n\n[assembly: InternalsVisibleTo(\"Avalonia.Xaml.Interacti"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/AddClassAction.cs",
    "chars": 2956,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/AttachedToVisualTreeBehavior.cs",
    "chars": 982,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n///"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/Avalonia.Xaml.Interactions.Custom.csproj",
    "chars": 1158,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramework"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/BindPointerOverBehavior.cs",
    "chars": 1455,
    "preview": "using System.Reactive;\nusing System.Reactive.Disposables;\nusing System.Reactive.Linq;\nusing Avalonia.Controls;\nusing Ava"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/BindTagToVisualRootDataContextBehavior.cs",
    "chars": 1217,
    "preview": "using System;\nusing Avalonia.Controls;\nusing Avalonia.VisualTree;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avaloni"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/BindingBehavior.cs",
    "chars": 1909,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Controls;\nusing Avalonia.Data;\n\nnamespace Avalonia.Xaml.Interactions.C"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/BoundsObserverBehavior.cs",
    "chars": 2710,
    "preview": "using System.Reactive;\nusing System.Reactive.Disposables;\nusing Avalonia.Controls;\nusing Avalonia.Data;\n\nnamespace Avalo"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ButtonClickEventTriggerBehavior.cs",
    "chars": 2410,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ButtonExecuteCommandOnKeyDownBehavior.cs",
    "chars": 1881,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Av"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ChangeAvaloniaPropertyAction.cs",
    "chars": 5671,
    "preview": "using System;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Globalization;\nusing System.Reflection;\nusing Avaloni"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/DisposingBehavior.cs",
    "chars": 1075,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n///"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/DisposingTrigger.cs",
    "chars": 754,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n///"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/DragControlBehavior.cs",
    "chars": 2975,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Media;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Aval"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandBehaviorBase.cs",
    "chars": 3100,
    "preview": "using System.Windows.Input;\nusing Avalonia.Controls;\nusing Avalonia.Threading;\nusing Avalonia.VisualTree;\n\nnamespace Ava"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnActivatedBehavior.cs",
    "chars": 1052,
    "preview": "using System.Reactive;\nusing System.Reactive.Disposables;\nusing System.Reactive.Linq;\nusing Avalonia.Controls.Applicatio"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnDoubleTappedBehavior.cs",
    "chars": 959,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnGotFocusBehavior.cs",
    "chars": 947,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnHoldingBehavior.cs",
    "chars": 939,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyBehaviorBase.cs",
    "chars": 958,
    "preview": "using Avalonia.Input;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>\n/// \n/// </summary>\npublic abstract c"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyDownBehavior.cs",
    "chars": 1138,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnKeyUpBehavior.cs",
    "chars": 1130,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnLostFocusBehavior.cs",
    "chars": 951,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPinchBehavior.cs",
    "chars": 931,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPinchEndedBehavior.cs",
    "chars": 951,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerCaptureLostBehavior.cs",
    "chars": 987,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerEnteredBehavior.cs",
    "chars": 971,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerExitedBehavior.cs",
    "chars": 967,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerMovedBehavior.cs",
    "chars": 963,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerPressedBehavior.cs",
    "chars": 971,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerReleasedBehavior.cs",
    "chars": 975,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureMagnifyBehavior.cs",
    "chars": 1027,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureRotateBehavior.cs",
    "chars": 1023,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerTouchPadGestureSwipeBehavior.cs",
    "chars": 1019,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPointerWheelChangedBehavior.cs",
    "chars": 991,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPullGestureBehavior.cs",
    "chars": 955,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnPullGestureEndedBehavior.cs",
    "chars": 975,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnRightTappedBehavior.cs",
    "chars": 955,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureBehavior.cs",
    "chars": 963,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureEndedBehavior.cs",
    "chars": 983,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnScrollGestureInertiaStartingBehavior.cs",
    "chars": 1023,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTappedBehavior.cs",
    "chars": 935,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTextInputBehavior.cs",
    "chars": 951,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandOnTextInputMethodClientRequestedBehavior.cs",
    "chars": 1035,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ExecuteCommandRoutedEventBehaviorBase.cs",
    "chars": 816,
    "preview": "using Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>\n/// \n/// </summary>\npublic ab"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FadeInBehavior.cs",
    "chars": 1931,
    "preview": "using System;\nusing Avalonia.Animation;\nusing Avalonia.Styling;\nusing System.Reactive.Disposables;\n\nnamespace Avalonia.X"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusBehavior.cs",
    "chars": 1417,
    "preview": "using System.Reactive;\nusing System.Reactive.Disposables;\nusing Avalonia.Controls;\nusing Avalonia.Data;\nusing Avalonia.T"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusBehaviorBase.cs",
    "chars": 1796,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Threading;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusControlAction.cs",
    "chars": 1467,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Threading;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusOnAttachedBehavior.cs",
    "chars": 379,
    "preview": "using System.Reactive.Disposables;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>\n/// \n/// </summary>\npubl"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusOnAttachedToVisualTreeBehavior.cs",
    "chars": 476,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Threading;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusOnPointerMovedBehavior.cs",
    "chars": 926,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Threading;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace "
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusOnPointerPressedBehavior.cs",
    "chars": 947,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Threading;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace "
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/FocusSelectedItemBehavior.cs",
    "chars": 1203,
    "preview": "using System;\nusing System.Reactive.Disposables;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Aval"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/HideFlyoutOnClickBehavior.cs",
    "chars": 1406,
    "preview": "using System;\nusing System.Reactive.Linq;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.In"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/HideOnKeyPressedBehavior.cs",
    "chars": 1973,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/HideOnLostFocusBehavior.cs",
    "chars": 1505,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/HorizontalScrollViewerBehavior.cs",
    "chars": 3264,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamespa"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/KeyDownTrigger.cs",
    "chars": 1326,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/PopupAction.cs",
    "chars": 2554,
    "preview": "using System;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.Metadata;\nusing Avalonia.Xaml"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/Properties/AssemblyInfo.cs",
    "chars": 567,
    "preview": "using System.Runtime.CompilerServices;\nusing Avalonia.Metadata;\n\n[assembly: InternalsVisibleTo(\"Avalonia.Xaml.Interactio"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/RemoveClassAction.cs",
    "chars": 2333,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/RoutedEventTriggerBase.cs",
    "chars": 651,
    "preview": "using Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>\n/// \n/// </summary>\npublic ab"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/RoutedEventTriggerBehavior.cs",
    "chars": 4690,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Interactivity;\nusing Avalonia.Reactive;\nusing Avalonia.Xaml.Interactivity;\n\nname"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/SelectAllOnGotFocusBehavior.cs",
    "chars": 868,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/SelectListBoxItemOnPointerMovedBehavior.cs",
    "chars": 1140,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Threading;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace "
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/SelectingItemsControlBehavior.cs",
    "chars": 6630,
    "preview": "// Based on code: https://github.com/adirh3/Avalonia.ListBoxAnimation.Samples\n\nusing System;\nusing System.Linq;\nusing S"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ShowBehaviorBase.cs",
    "chars": 2056,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Interactivity;\nusing Avalonia.Threading;\n\nnamespace Avalonia.Xaml.Interactions.C"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ShowOnDoubleTappedBehavior.cs",
    "chars": 886,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interac"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ShowOnKeyDownBehavior.cs",
    "chars": 1916,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interac"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ShowOnTappedBehavior.cs",
    "chars": 854,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ShowPointerPositionBehavior.cs",
    "chars": 1743,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/TextBoxSelectAllTextBehavior.cs",
    "chars": 449,
    "preview": "using System.Reactive.Disposables;\nusing Avalonia.Controls;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary>"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ToggleIsExpandedOnDoubleTappedBehavior.cs",
    "chars": 1058,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Custom/ValueChangedTriggerBehavior.cs",
    "chars": 1449,
    "preview": "using Avalonia.Reactive;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.Custom;\n\n/// <summary"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/Avalonia.Xaml.Interactions.DragAndDrop.csproj",
    "chars": 1112,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramework"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/ContextDragBehavior.cs",
    "chars": 6754,
    "preview": "using System;\nusing System.Threading.Tasks;\nusing Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/ContextDropBehavior.cs",
    "chars": 3070,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamesp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/DropHandlerBase.cs",
    "chars": 6161,
    "preview": "using System.Collections.Generic;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interact"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/IDragHandler.cs",
    "chars": 610,
    "preview": "using Avalonia.Input;\n\nnamespace Avalonia.Xaml.Interactions.DragAndDrop;\n\n/// <summary>\n/// \n/// </summary>\npublic inte"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/IDropHandler.cs",
    "chars": 2188,
    "preview": "using Avalonia.Input;\nusing Avalonia.Interactivity;\n\nnamespace Avalonia.Xaml.Interactions.DragAndDrop;\n\n/// <summary>\n/"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/Properties/AssemblyInfo.cs",
    "chars": 573,
    "preview": "using System.Runtime.CompilerServices;\nusing Avalonia.Metadata;\n\n[assembly: InternalsVisibleTo(\"Avalonia.Xaml.Interacti"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.DragAndDrop/TypedDragBehavior.cs",
    "chars": 5127,
    "preview": "using System;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Threading.Tasks;\nusing Avalonia.Controls;\nusing Avalo"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/Avalonia.Xaml.Interactions.Draggable.csproj",
    "chars": 1110,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramework"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/CanvasDragBehavior.cs",
    "chars": 4875,
    "preview": "using Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.Input;\nusing Avalonia.Inter"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/GridDragBehavior.cs",
    "chars": 8838,
    "preview": "using Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.Input;\nusing Avalonia.Interactivity;\nusing "
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/ItemDragBehavior.cs",
    "chars": 12867,
    "preview": "using System;\nusing System.Collections;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.Inp"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/Properties/AssemblyInfo.cs",
    "chars": 571,
    "preview": "using System.Runtime.CompilerServices;\nusing Avalonia.Metadata;\n\n[assembly: InternalsVisibleTo(\"Avalonia.Xaml.Interacti"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/SelectionAdorner.cs",
    "chars": 1326,
    "preview": "using Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Controls.Primitives;\nusing Avalonia.Media;\n\nnamespace Avalonia."
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Draggable/Styles.axaml",
    "chars": 4860,
    "preview": "<Styles xmlns=\"https://github.com/avaloniaui\"\n        xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n        xml"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Events/Avalonia.Xaml.Interactions.Events.csproj",
    "chars": 1107,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFramework"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Events/DoubleTappedEventBehavior.cs",
    "chars": 1440,
    "preview": "using Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interac"
  },
  {
    "path": "src/Avalonia.Xaml.Interactions.Events/GotFocusEventBehavior.cs",
    "chars": 1420,
    "preview": "using Avalonia.Input;\nusing Avalonia.Interactivity;\nusing Avalonia.Xaml.Interactivity;\n\nnamespace Avalonia.Xaml.Interac"
  }
]

// ... and 137 more files (download for full content)

About this extraction

This page contains the full source code of the AvaloniaUI/Avalonia.Xaml.Behaviors GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 337 files (525.0 KB), approximately 132.6k tokens, and a symbol index with 780 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!