Skip to content

Timeline

Timeline is a vertical timeline: an ItemsControl hosting NaviusTimelineItem entries in a single column. Each item is a HeaderedContentControl: Header holds the rail (a NaviusTimelineDot, plus a NaviusTimelineConnector on every item except the last), and Content holds a NaviusTimelineContent block (a fixed-vertical StackPanel for a NaviusTimelineTitle and NaviusTimelineDescription). HeaderedContentControl is reused directly rather than inventing a bespoke two-content control, since it already models exactly that two-slot shape.

xmlns:timeline="clr-namespace:Navius.Wpf.Ui.Timeline;assembly=Navius.Wpf.Ui"
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Navius.Wpf.Ui;component/Themes/Timeline.xaml" />
</ResourceDictionary.MergedDictionaries>
<timeline:NaviusTimeline>
<timeline:NaviusTimelineItem>
<timeline:NaviusTimelineItem.Header>
<StackPanel>
<timeline:NaviusTimelineDot Variant="Default" />
<timeline:NaviusTimelineConnector />
</StackPanel>
</timeline:NaviusTimelineItem.Header>
<timeline:NaviusTimelineContent>
<timeline:NaviusTimelineTitle Content="Repository created" />
<timeline:NaviusTimelineDescription Content="Project scaffolded." />
</timeline:NaviusTimelineContent>
</timeline:NaviusTimelineItem>
<timeline:NaviusTimelineItem>
<timeline:NaviusTimelineItem.Header>
<timeline:NaviusTimelineDot Variant="Outline" />
</timeline:NaviusTimelineItem.Header>
<timeline:NaviusTimelineContent>
<timeline:NaviusTimelineTitle Content="In progress" />
<timeline:NaviusTimelineDescription Content="Last item omits the connector." />
</timeline:NaviusTimelineContent>
</timeline:NaviusTimelineItem>
</timeline:NaviusTimeline>
Property Type Default From Description
Header object? null HeaderedContentControl (via NaviusTimelineItem) The rail content: a NaviusTimelineDot, optionally followed by a NaviusTimelineConnector.
Content object? - ContentControl/HeaderedContentControl (via NaviusTimelineItem) The row body, typically a NaviusTimelineContent.
Variant NaviusTimelineDotVariant Default NaviusTimelineDot Default | Outline | Secondary | Destructive | Muted. Each switches the dot’s background/foreground/border brushes via Themes/Timeline.xaml style triggers; Outline additionally renders a 2px border on a Navius.Card background instead of a filled circle.

None of the seven types in this family override CreateAutomationPeer. NaviusTimeline (an ItemsControl) relies on whatever default peer ItemsControl provides natively; NaviusTimelineItem (a HeaderedContentControl) and the ContentControl-derived NaviusTimelineDot/NaviusTimelineTitle/ NaviusTimelineDescription likewise rely on their native ContentControl behavior. NaviusTimelineConnector is explicitly decorative (the doc comment describes it as “the hairline connecting a NaviusTimelineDot to the next item’s dot,” with nothing to announce). The M6 audit found this family clean: all variant brushes (Primary, Secondary, Destructive, Muted and their foregrounds) are sourced via DynamicResource, with no template-part lookups or risky bindings. The unit suite verifies template application for NaviusTimeline/NaviusTimelineItem/ NaviusTimelineConnector, the Default/Destructive NaviusTimelineDot background colors, and that an ItemsSource of NaviusTimelineItem populates Items.

  • Vertical-only: the web contract’s Horizontal and Alternate layouts are not ported. This project’s scope is a single vertical column, per the doc comment on NaviusTimeline.