Browse Source
Fix TreeViewItem Expand/Collapse event source (#17558)
* test: add two fail tests.
* fix: fix Expand/Collapse event source.
pull/17571/head
Dong Bin
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
43 additions and
1 deletions
-
src/Avalonia.Controls/TreeViewItem.cs
-
tests/Avalonia.Controls.UnitTests/TreeViewTests.cs
|
|
|
@ -85,7 +85,7 @@ namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
var routedEvent = args.NewValue.Value ? ExpandedEvent : CollapsedEvent; |
|
|
|
var eventArgs = new RoutedEventArgs() { RoutedEvent = routedEvent, Source = this }; |
|
|
|
TreeViewOwner?.RaiseEvent(eventArgs); |
|
|
|
RaiseEvent(eventArgs); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
@ -1528,6 +1528,48 @@ namespace Avalonia.Controls.UnitTests |
|
|
|
Assert.Equal(selected[0], target.SelectedItem); |
|
|
|
Assert.Equal(selected, target.SelectedItems); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void CollapseEvent_Can_Be_Captured_By_TreeView_When_Collapsing_TreeViewItem() |
|
|
|
{ |
|
|
|
using var app = Start(); |
|
|
|
var data = CreateTestTreeData(); |
|
|
|
var target = CreateTarget(data: data); |
|
|
|
var item = data[0]; |
|
|
|
var container = Assert.IsType<TreeViewItem>(target.TreeContainerFromItem(item)); |
|
|
|
|
|
|
|
var raised = false; |
|
|
|
object? source = null; |
|
|
|
target.AddHandler(TreeViewItem.CollapsedEvent, (o, e) => |
|
|
|
{ |
|
|
|
raised = true; |
|
|
|
source = e.Source; |
|
|
|
}); |
|
|
|
container.IsExpanded = false; |
|
|
|
Assert.True(raised); |
|
|
|
Assert.Equal(container, source); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void CollapseEvent_Should_Be_Raised_When_Collapsing_TreeViewItem() |
|
|
|
{ |
|
|
|
using var app = Start(); |
|
|
|
var data = CreateTestTreeData(); |
|
|
|
var target = CreateTarget(data: data); |
|
|
|
var item = data[0]; |
|
|
|
var container = Assert.IsType<TreeViewItem>(target.TreeContainerFromItem(item)); |
|
|
|
|
|
|
|
var raised = false; |
|
|
|
object? source = null; |
|
|
|
container.AddHandler(TreeViewItem.CollapsedEvent, (o, e) => |
|
|
|
{ |
|
|
|
raised = true; |
|
|
|
source = e.Source; |
|
|
|
}); |
|
|
|
container.IsExpanded = false; |
|
|
|
Assert.True(raised); |
|
|
|
Assert.Equal(container, source); |
|
|
|
} |
|
|
|
|
|
|
|
private static TreeView CreateTarget(Optional<IList<Node>?> data = default, |
|
|
|
bool expandAll = true, |
|
|
|
|