다음 작업을 수행하려고합니다.ItemsControl 기존 캔버스 내부
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 컨트롤을 찾을 수 없습니다.
누구나 내가 힘들어하고있는 명백한 것을 여기서 지적 할 수 있습니까?
미리 감사드립니다. 다음과 같이
그게 내가 시도 (ItemsPanelTemplate 내부 캔버스를 단순화)했지만 그때 내 코드에서 참조 할 수 없었다. 나는 그것을 다르게 할 것입니다 - 어쩌면 내가 잘못했는지 ... – ZombieSheep
'ItemsPanelTemplate'에 의해 생성되었으므로 쉽게 참조 할 수 없습니다. VisualTreeHelper와 같은 것을 사용해야 만 할 것입니다. 당신의 주요 문제는 어떻습니까? 바인딩 문제입니까? –
출력 창에 아무 것도 보이지 않고 다른 속성이 컨트롤 자체에서 예상대로 바인딩되어 있습니다. – ZombieSheep