2011-12-06 2 views
0

사용자가 다양한 양식 요소를 선택하고 드래그 할 수있는 양식이 있습니다. 사용자가 양식의 레이아웃을 사용자 정의 할 수 있으므로 캔버스를 사용하고 있으며 모든 요소는 하위 요소입니다.WPF에서 최상위 컨트롤 만들기

두 요소가 캔버스의 자식으로 마지막으로 추가 된 것과 같은 영역에있는 경우 위에 그려집니다. 드래그 된 활성 요소가 최상위 요소로 설정되도록 만들 수 있기를 원합니다.

나는 SetZOrder 메서드를 사용하여 0으로 설정했지만 아무것도 수행하지 않습니다. 검사시 GetZOrder를 호출하는 모든 요소에 대해 각각 0을 얻습니다. 따라서 0으로 설정하면 차이가 발생하지 않습니다.

내가 찾은 유일한 해결책은 제거하고 캔버스에 요소를 추가하는 것입니다.

 _mainCanvas.Children.Remove(_selectedElement); 
     _mainCanvas.Children.Add(_selectedElement); 

이것이 작동하는 동안, 나는 이것을하는 것이 더 바람직하고 적절한 방법이어야한다고 느낍니다.

+0

조쉬 스미스 (Josh Smith)가이 기사를 보았습니까? http://www.codeproject.com/KB/WPF/DraggingElementsInCanvas.aspx –

답변

0

ZIndex는 어느 것이 최상위인지 결정합니다. 가장 높은 ZIndex가 이깁니다. 최상위가 될 ZIndex를 다른 ZIndex보다 높은 숫자로 설정하십시오.

+2

['ZIndex'] (http://msdn.microsoft.com/en- us/library/system.windows.controls.panel.zindex.aspx) .. –

+0

@HB 웁스! 그것이 내가 기억에서 얻은 것입니다. 결정된. –

+0

제 문제는 ZIndex의 기본값은 0입니다. 동일한 ZIndex를 가진 둘 이상의 컨트롤을 보호하지 못한다는 것입니다. 모든 컨트롤을 ZIndex 1로 기본값으로 설정할 수 있습니다. 컨트롤을 선택하면 ZIndex가 0으로 설정되지만 선택되지 않으면 다시 1로 설정해야합니다. ZIndex를 0으로 설정하면 자동으로 다른 모든 ZIndex 값을 이동시킬 수 있었으면 좋겠다. 그러면 이전에 선택한 요소를 추적하고 ZIndex를 더 높은 값으로 다시 설정할 필요가 없다. 그 시점에서 컨트롤을 제거하고 추가하는 것이 더 단순 해 보입니다. – WPFNewbie

관련 문제