¿Cómo hacer que itemtemplate conozca su plantilla que contiene?

Quiero que esta Elipse obtenga sus coordenadas de su correspondiente BallViewModel y las use para determinar su ubicación dentro de un lienzo. La lista de bolas está vinculada aList<BallVM> en mainviewmodel y, por lo tanto, elegí un control Items que tiene un panel de lienzo.

¿Es correcto este enfoque?

Si intento unirme a X e Y dentro de un estilo de contenedor de elementos, entonces no es específico de una bola determinada.

No importa lo que establezca en las propiedades Canvas.bottom o canvas.left, la elipse siempre está en la parte superior izquierda.

<Grid>
        <ItemsControl ItemsSource="{Binding Balls}" Background="red">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas MouseMove="Canvas_MouseMove" Background="Blue"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

            <ItemsControl.ItemTemplate>
                <DataTemplate DataType="{x:Type VM:BallVM}">
                    <Ellipse Canvas.Bottom="{Binding Y}" Canvas.Left="{Binding X}" Width="100" Height="100" Fill="Red"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>

Respuestas a la pregunta(1)

Su respuesta a la pregunta