feat: start/end effect.
This commit is contained in:
@@ -32,9 +32,9 @@
|
|||||||
>
|
>
|
||||||
</u:Timeline>
|
</u:Timeline>
|
||||||
<u:Timeline>
|
<u:Timeline>
|
||||||
<u:TimelineItem Header="第一步" Content="Step 1"></u:TimelineItem>
|
<u:TimelineItem Header="第一步" Content="Step 1" Type="Default"></u:TimelineItem>
|
||||||
<u:TimelineItem Header="第二步" Content="Step 2"></u:TimelineItem>
|
<u:TimelineItem Header="第二步" Content="Step 2" Type="Default"></u:TimelineItem>
|
||||||
<u:TimelineItem Header="第三步" Content="Step 3"></u:TimelineItem>
|
<u:TimelineItem Header="第三步" Content="Step 3" Type="Default"></u:TimelineItem>
|
||||||
</u:Timeline>
|
</u:Timeline>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ public class Timeline: ItemsControl
|
|||||||
base.PrepareContainerForItemOverride(container, item, index);
|
base.PrepareContainerForItemOverride(container, item, index);
|
||||||
if (container is TimelineItem t)
|
if (container is TimelineItem t)
|
||||||
{
|
{
|
||||||
|
bool start = index == 0;
|
||||||
|
bool end = index == ItemCount - 1;
|
||||||
|
t.SetEnd(start, end);
|
||||||
if (IconMemberBinding != null)
|
if (IconMemberBinding != null)
|
||||||
{
|
{
|
||||||
t.Bind(TimelineItem.IconProperty, IconMemberBinding);
|
t.Bind(TimelineItem.IconProperty, IconMemberBinding);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using Avalonia.Media;
|
|||||||
|
|
||||||
namespace Ursa.Controls;
|
namespace Ursa.Controls;
|
||||||
|
|
||||||
|
[PseudoClasses(":first", ":last")]
|
||||||
public class TimelineItem: HeaderedContentControl
|
public class TimelineItem: HeaderedContentControl
|
||||||
{
|
{
|
||||||
public static readonly StyledProperty<object?> IconProperty = AvaloniaProperty.Register<TimelineItem, object?>(
|
public static readonly StyledProperty<object?> IconProperty = AvaloniaProperty.Register<TimelineItem, object?>(
|
||||||
@@ -36,6 +37,10 @@ public class TimelineItem: HeaderedContentControl
|
|||||||
get => GetValue(TypeProperty);
|
get => GetValue(TypeProperty);
|
||||||
set => SetValue(TypeProperty, value);
|
set => SetValue(TypeProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void SetEnd(bool start, bool end)
|
||||||
|
{
|
||||||
|
PseudoClasses.Set(":first", start);
|
||||||
|
PseudoClasses.Set(":last", end);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user