О, я получил то, что не работало должным образом, я установил свойство Canvas.Top для TextBlock, и, возможно, TextBlock обернут в ContentPresenter, который имеет смысл сейчас

аюсь использовать Canvas для отображения объектов, которые имеют «мировое» местоположение (а не «экранное» местоположение). Холст определяется так:

<Canvas Background="AliceBlue">
    <ItemsControl Name="myItemsControl" ItemsSource="{Binding MyItems}">
        <Image x:Name="myMapImage" Panel.ZIndex="-1" />
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Canvas>
                    <TextBlock Canvas.Left="{Binding WorldX}" Canvas.Top="{Binding WorldY}"
                               Text="{Binding Text}"
                               Width="Auto" Height="Auto" Foreground="Red" />
                </Canvas>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Canvas>

MyItem определяется следующим образом:

public class MyItem
{
    public MyItem(double worldX, double worldY, string text)
    {
        WorldX = worldX;
        WorldY = worldY;
        Text = text;
    }
    public double WorldX { get; set; }
    public double WorldY { get; set; }
    public string Text { get; set; }
}

Кроме того, у меня есть метод для преобразования между мировыми и экранными координатами:

Point worldToScreen(double worldX, double worldY)
{
    // Note that the conversion uses an internal m_mapData object
    var size = m_mapData.WorldMax - m_mapData.WorldMin;
    var left = ((worldX - m_currentMap.WorldMin.X) / size.X) * myMapImage.ActualWidth;
    var top = ((worldY - m_currentMap.WorldMin.Y) / size.Y) * myMapImage.ActualHeight;
    return new Point(left, top);
}

В текущей реализации элементы расположены не в том месте, потому что их местоположение не преобразуется в экранные координаты.

Как применить метод worldToScreen к объектам MyItem до их добавления на холст?

Редактировать:

Я немного запутался, правильно ли я иду, поэтому я написал еще один вопрос:Как использовать WPF для визуализации простого 2D-мира (карта и элементы)

На этот вопрос есть полезный и полный ответ.

Ответы на вопрос(3)

Ваш ответ на вопрос