我正在努力完成以下任务。
1)在我的页面上有一个画布控件,背景图像是可伸缩的,可以扩展的。这与我所拥有的一切正常。 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>
并在后面的代码中设置POIPresenter的ItemsSource,但是用户控件在左侧(0,0)显示在另一个上面。
我尝试在ItemsPanelTemplate中移动画布声明,但是我设置图像缩放/中心的声明不起作用 - 他们找不到PanoCanvas控件。
有人能指出我在这里做的非常明显的事吗,拜托?
提前致谢。
答案 0 :(得分:1)
对于初学者,您可以简化如下:
<ItemsControl ...>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas>
<Canvas.Background>...</Canvas.Background>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
也就是说,使用一个Canvas
而不是两个。
除此之外,在输出窗口中查找绑定错误。可能未正确解析TopPosition
和LeftPosition
属性。