Canvas mit Linien und Punkten

Ich migriere eine alte Anwendung und versuche, MVVM zu implementieren. Die alte Anwendung hat eine ähnliche Oberfläche wie die beschriebenein diesem Beitrag. Obwohl es etwas einfacher ist. Ich mache mir keine allzu großen Sorgen, MVVM genau zu folgen, aber ich möchte dies als Gelegenheit zum Üben nutzen.

Ich habe die folgende Klasse:

public class LineViewModel
{
    public ObservableCollection<LinePoint> Points {get;}
    public Geometry LineGeometry {get;}
}

In meinem Anwendungsansichtsmodell habe ich eine Sammlung von Linien und ich möchte diese auf einer Leinwand zeichnen, aber ich möchte auch die Punkte zeichnen, aus denen jede Linie besteht.

Hier ist meine XAML bisher:

<ItemsControl ItemsSource="{Binding Lines}">
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type local:LineViewModel}">
            <Path StrokeThickness="2.0" Stroke="Black" Data="{Binding LineGeometry}" />
        </DataTemplate>

        <DataTemplate DataType="{x:Type local:LinePoint}">
            <Ellipse StrokeThickness="1.0" Stroke="Black" Fill="MistyRose" Width="8.0" Height="8.0" />
        </DataTemplate>
    </ItemsControl.Resources>

    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Ich kann sehen, wie die Linie gezeichnet wird und dies scheint gut zu funktionieren. Wie Sie sehen können, habe ich die Vorlage für die Punkte hinzugefügt, aber ich weiß nicht, wie ich die XAML einrichten soll, um diese zu zeichnen. Wie kann ich die Punkte auch zeichnen?

Das Herausziehen der Punkte aus der Linie und das Anzeigen dieser Punkte aus dem Anwendungsansichtsmodell erscheint kontraintuitiv, da das LineViewModel die Punkte in einer Linie und nicht die Anwendung verwaltet. Ich würde die Punkte lieber nicht von den Linien trennen, wenn ich das ändern kann.

Vielen Dan

Antworten auf die Frage(2)

Ihre Antwort auf die Frage