2011-11-14 4 views
2

다음 작업을 수행하려고합니다.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 컨트롤을 찾을 수 없습니다.

누구나 내가 힘들어하고있는 명백한 것을 여기서 지적 할 수 있습니까?

미리 감사드립니다. 다음과 같이

답변

1

우선, 당신은 간단하게 할 수 있습니다

입니다
<ItemsControl ...> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas> 
       <Canvas.Background>...</Canvas.Background> 
      </Canvas> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

, 하나 Canvas 대신 두의 사용합니다.

이외의 출력 창에서 바인딩 오류를 찾으십시오. 아마도 TopPositionLeftPosition 속성이 올바르게 해석되지 않습니다.

+0

그게 내가 시도 (ItemsPanelTemplate 내부 캔버스를 단순화)했지만 그때 내 코드에서 참조 할 수 없었다. 나는 그것을 다르게 할 것입니다 - 어쩌면 내가 잘못했는지 ... – ZombieSheep

+0

'ItemsPanelTemplate'에 의해 생성되었으므로 쉽게 참조 할 수 없습니다. VisualTreeHelper와 같은 것을 사용해야 만 할 것입니다. 당신의 주요 문제는 어떻습니까? 바인딩 문제입니까? –

+0

출력 창에 아무 것도 보이지 않고 다른 속성이 컨트롤 자체에서 예상대로 바인딩되어 있습니다. – ZombieSheep