Я пытаюсь выполнить следующее.
1) У меня на странице есть элемент управления canvas с фоновым изображением, которое можно масштабировать и панорамировать. Это работает хорошо с тем, что у меня есть.
2) Показать набор элементов управления в пределах холста. Предполагается, что это аналогично тому, как домашняя страница Bing отображает горячие точки на изображении, показанном там. Элементы управления должны перемещаться по холсту при панорамировании / увеличении изображения.
Я пробовал следующее
<Canvas Name="PanoCanvas" >
<Canvas.Background>
<ImageBrush x:Name="PanoImage" ImageSource="/Images/OtherImages/PanoBackound.jpg" Stretch="None" />
</Canvas.Background>
<ItemsControl Name="POIPresenter">
<ItemsControl.ItemTemplate>
<DataTemplate>
<uc:PointOfInterest />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Top" Value="{Binding TopPosition}" />
<Setter Property="Canvas.Left" Value="{Binding LeftPosition}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Canvas>
и задайте ItemsSource для POIPresenter в коде позади, но пользовательские элементы управления отображаются друг над другом слева (на уровне 0,0).
Я пытался переместить объявления холста внутри ItemsPanelTemplate, но мои объявления об установке масштаба / центра изображения не работают - они не могут найти элемент управления PanoCanvas.
Кто-нибудь может указать на болезненно очевидную вещь, которую я здесь делаю, пожалуйста?
Заранее спасибо.