Canvas에 이미지 개체가 있습니다. 나는 그것에 소스를 설정하지 않았지만 좌표와 크기가 있습니다. 태그는 다음과 같습니다.SIlverlight : Canvas에서 이미지를 찾을 수 없습니다.
< 이미지 Canvas.Top = "50"Height = "68"Width = "110"HorizontalAlignment = "Left"Name = "image1"Stretch = "Fill"VerticalAlignment = "Top"/ >
다음은 문제입니다. 마우스를 위로 가져 가면 찾고 싶습니다. 이 코드 : 소스가 설정되어 있지 않으면
VisualTreeHelper.FindElementsInHostCoordinates (점, Application.Current.RootVisual)
이 이미지를 찾을 수 없습니다. 소스가 설정되어 있지 않은 경우, 이미지는 돌려 주어지지 않습니다. 아무도 이유를 아나요? 이것은 나에게 문제를 일으킨다. 일부 드래그/드롭 코드가 있는데 Image 컨트롤에서 뭔가를 놓으려고합니다. 그러나 마우스가 그 위에있을 때를 알아야합니다.
내가 할 수있는 다른 방법이 있다는 것을 알고 있습니다 (예 : 그리드 또는 무언가와 같은 다른 위치에 배치하고 감지하는 등).하지만 작동하지 않습니다. 나는 작동 할 수있는 몇 가지 방법을 생각할 수 있지만, 덜 우아합니다.
위 이미지를 반환하면 이상적입니다.
나는 이것이 너무나 명백한 해결책처럼 보였기 때문에 너무 흥분했습니다. 하지만 슬프게도, 그렇지 않았습니다. 사실로 설정해도 효과가 없습니다. 추가 조사에 따르면 기본적으로 true로 설정되었습니다. 고마워, 그래도. – Pete
어디에서'포인트'를 얻고 있습니까? Image 자체의 MouseEvent에서 가져온 것입니까? 다른 점은 참조 객체이므로 Point의 좌표가'Application.RootVisual'과 관련되어 있는지 확인하는 것입니다. – Stephan
이것은 드래그/드롭 코드 용입니다. 문제의 코드는 다음과 같습니다. 포인트 포인트 = e.GetPosition (_canvas); foreach (VisualTreeHelper.FindElementsInHostCoordinates (point, Application.Current.RootVisual))의 UIElement 요소 그 시점의 모든 항목 (배경을 제공하기 위해 사용하는 표 포함)이 표시됩니다. 그 시점에서 드래그하는 이미지, 그리드, 캔버스, 사용자 컨트롤을 볼 수 있습니다. 해당 위치에서 이미지가 나타나지 않을 가능성이 있지만, 그리드가 요소 목록에 더 이상 나타나지 않으면 변경된 모든 것을 제거하려고했습니다. – Pete