2011-03-24 5 views
1

메 뉴를 잃었습니다.WPF StackPanel이 다음과 같은 문제를 해결하려고 시도하는 자식

Image가 포함 된 StackPanel이 있습니다. 하지만 내가 판넬을 치면. 아이. 때로는 0을 때로는 1을 반환합니다. 왜요? 이 문제를 어떻게 해결할 수 있습니까? 참고 : MouseEvent의 보낸 사람 Object에서 StackPanel을 가져옵니다.

누구든지 내 문제를 해결하는 방법을 알고 있습니까?

private void MoveContainer(object sender, MouseEventArgs e) 
{ 
    StackPanel panel = sender as StackPanel; 

    MessageBox.Show(panel.Children.Count.ToString()); 
} 

업데이트 2 :

<StackPanel Name="a1" AllowDrop="True" 
        PreviewMouseLeftButtonDown="StartDrag" 
        PreviewMouseMove="MoveContainer" 
        Visibility="Visible" 
        Background="Transparent"> 
      <Image Source="testcontainer.png" Width="60" Height="30"></Image> 
</StackPanel> 

업데이트 3 :

private void StartDrag(object sender, MouseEventArgs e) 
{ 

    startPos=e.GetPosition(null); //startPos is a local attribute 
} 
+3

@flop - 코드 게시 – dugas

+0

@thedugas가 게시물의 코드를 업데이트했습니다. – flop

+0

일부 Xaml을 게시 할 수 있습니까?이 문제는 다시 만들 수 없습니다. 이벤트 라우팅 문제 일 수도 있고 패널 변수가 항상 올바르게 전송되고있는 것 같습니다. – benPearce

답변

2

내가 코드를 테스트하고 항상 나를 위해 1을 반환 어떤 도움

업데이트 :) 감사합니다 그러나, 당신의 끝 부분에서 무엇이 잘못되었는지를 아는 정보가 너무 적습니다.

StackPanel을 몇 개나 수정합니까?
자식이없는 다른 StackPanels에서 사용하는 이벤트 처리기입니까?
중첩 된 StackPanels을 발생시키는 이상한 ControlTemplate을 사용합니까?

+0

i 그 방법과 다른 패널에서 패널을 수정하지만 다른 하나는 prob라고 생각하지 않습니다. 예, 모든 스택 패널에 동일한 핸들러를 사용합니다 (일부는 자식이 있습니다). , 컨트롤 템플리트 없음 – flop

+0

다른 StackPanel에 대해 동일한 핸들러를 사용하는 경우 실제로 자식이있는 핸들러를 항상 친다는 것을 어떻게 확신 할 수 있습니까? 그 단일 StackPanel에 대한 핸들러 만 사용하고 여전히 때로는 0을 얻으십시오. –

+0

하지만 보낸 사람 개체가 이벤트를 트리거 한 패널을 반환하지 않아야합니까?하지만 어쨌든 감사합니다. 다른 처리기로 시도 할 것입니다. :) – flop

관련 문제