I 항목을 ItemsControl을 사용하여 캔버스의 컬렉션에서 가져옵니다. 위치 지정은 TranslateTransform : <TranslateTransform X="{Binding x}" Y="{Binding y}"/>
에 의해 수행됩니다. 항목을 클릭 가능하게 만들기 위해 항목에 MouseLeftButtonUp 이벤트를 구현했습니다.ItemsControl 항목을 캔버스에 배치 한 후 Transform (Silverlight 5)
<ItemsControl ItemsSource="{Binding XYPoints}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Width="20" Height="20" Fill="Red" MouseLeftButtonUp="XYPlotPoint_MouseLeftButtonUp">
<Ellipse.RenderTransform>
<TransformGroup>
<RotateTransform Angle="0"/>
<TranslateTransform X="{Binding x}" Y="{Binding y}"/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse >
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
은 이것이다 :
아래의 전체 코드를 참조하십시오 I는 x와 y 값, 즉 내 항목 중 하나를 클릭하고 TranslateTransform 좌표를 얻을 수 있도록하려면를 그 캔버스에 요소를 배치하는 데 사용되었습니다.
내 아이디어는 보낸 사람을 타원 (Ellipse)으로 다시 캐스팅 한 후 이벤트를 보낸 사람에게이 아이디어를 전달하는 것이 었습니다. Ellipse myEllipse = (Ellipse)sender;
하지만 정보가 포함 된 속성이 표시되지 않습니다.
GeneralTransform gt = myEllipse.TransformToVisual(Application.Current.RootVisual);
을 사용하는 경우 그리드를 그리는 것이 아니라 RootVisual과 관련된 변환 만 제공합니다.
아마 여기서 분명히 드러난 부분을 간과 할 것입니다. 나는 어떤 힌트라도 감사 할 것이다.
당신은 X를 찾으려하고 변환 변환의 y 값. DataContext에서 바인드되지 않았습니까? 그냥 DataContext 얻고 x 및 y 값을 검사하십시오. –
고마워요 조쉬, 어떻게 그럴 수 있니? 그리고 x와 y 위치 값을 가진 1000 개의 아이템의 'ObservableCollection' 인'DataContext'를 얻은 후에 방금 클릭 한 아이템이 어떤 아이템인지 알 수 있습니까? – Phasma
다른 해결책을 찾았습니다. 아래를 참조하십시오. 당신이 묘사하는 방식도 가능하다면, Josh, 그것에 대해 더 많이 듣고 싶습니다. – Phasma