Just to add complementary infos about my last comment... The right way to position ItemTemplate is to style the ContentPresenter, within ItemsControl.ItemContainerStyle. Below you will find my finally working code :
<UserControl.Resources>
    <Style x:Key="PathStyle" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Path Data="{Binding Data}" 
                          StrokeStartLineCap="Round" 
                          Stretch="Fill" 
                          StrokeEndLineCap="Round" 
                          Stroke="{DynamicResource selectedZoneBorderColor}" 
                          StrokeLineJoin="Round" 
                          Width="{Binding Path=Width}"
                          Height="{Binding Path=Height}"
                          Fill="{DynamicResource selectedZoneColor}" 
                          Panel.ZIndex="1" 
                          StrokeThickness="3" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>
<ItemsControl Name="zonesContainer" ItemsSource="{Binding Zones}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas Grid.Column="1" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Button 
                            Style="{StaticResource ResourceKey=PathStyle}"
                            Command="{Binding ElementName=zonesContainer, 
                                                Path=DataContext.ActivateZone}"
                            CommandParameter="{Binding Id}"
                        />
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
                <ItemsControl.ItemContainerStyle>
                    <Style TargetType="ContentPresenter">
                        <Setter Property="Canvas.Left" Value="{Binding Path=Left}" />
                        <Setter Property="Canvas.Top" Value="{Binding Path=Top}" />
                    </Style>
                </ItemsControl.ItemContainerStyle>
            </ItemsControl>
All this with corresponding VM exposing a ObservableCollection, and a Zone class exposing all inside props (Width, Height, Top, Left...).
You can detailled answer here