WPF Canvas Scaling / Transform para caber

Estou reposicionando esta pergunta, pois não recebi muita resposta da última vez, espero que um pouco de reformulação possa ajudar ...

Essencialmente, o que estou tentando fazer é criar uma tela com base de dados, que escalará automaticamente seu conteúdo para 'preencher' o espaço disponível. Mais ou menos como um zoom para caber na operação. Infelizmente, minhas habilidades no WPF ainda não são muito fortes e estou lutando para descobrir como fazer essa última parte. Eu segui alguns exemplos de ligação de dados para vincular a tela, mas não tenho certeza se talvez isso esteja errado e me atrapalhe.

No momento, tenho dois problemas básicos, dependendo da maneira como tento abordar a solução:

Não sei como redimensionar a tela automaticamente através do XAML, se possível, usando uma transformação.Não consigo fazer referência à tela no código de trás, acho que é parte de um ItemsControl?

Um exemplo do que estou tentando alcançar, tenho A e quero obter B:

(link expirado removido para um img)

O código que estou usando atualmente é bastante simples, basta criar 4 pontos com uma determinada coordenada e outro modelo de visualização para agrupá-los.

public class PointCollectionViewModel
{
    private List<PointViewModel> viewModels;
    public PointCollectionViewModel()
    {
        this.viewModels = new List<PointViewModel>();
        this.viewModels.Add(new PointViewModel(new Point(1, 1)));
        this.viewModels.Add(new PointViewModel(new Point(9, 9)));
        this.viewModels.Add(new PointViewModel(new Point(1, 9)));
        this.viewModels.Add(new PointViewModel(new Point(9, 1)));
    }

    public List<PointViewModel> Models
    {
        get { return this.viewModels; }
    }
}

public class PointViewModel
{
   private Point point;
   public PointViewModel(Point point)
   {
       this.point = point;
   }

   public Double X { get { return point.X; } }
   public Double Y { get { return point.Y; } }
}

Em seguida, o PointCollectionViewModel é usado como o DataContent para o meu AutoResizingCanvas, que possui o seguinte XAML para implementar a ligação:

<UserControl x:Class="WpfCanvasTransform.AutoResizingCanvas"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfCanvasTransform"
    x:Name="parent">
    <ItemsControl x:Name="itemsControl" ItemsSource="{Binding Path=Models}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
        <Canvas x:Name="canvas" Background="DarkSeaGreen" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Canvas.LayoutTransform>
            <ScaleTransform ScaleY="-1" />
            </Canvas.LayoutTransform>

        </Canvas>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate DataType="{x:Type local:PointViewModel}">
        <Ellipse Width="3" Height="3" Fill="Red"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemContainerStyle>
        <Style>
        <Setter Property="Canvas.Top" Value="{Binding Path=Y}"/>
        <Setter Property="Canvas.Left" Value="{Binding Path=X}"/>
        </Style>
    </ItemsControl.ItemContainerStyle>
    </ItemsControl>
</UserControl>

questionAnswers(1)

yourAnswerToTheQuestion