자식 usercontrol에서 부모로 이벤트를 버블 링하려고합니다. 내가 정의Silverlight usercontrols에서 이벤트를 버블 링하는 방법은 무엇입니까?
<UserControl>
<StackPanel>
<customs:myButton CustomClick="something" />
<customs:myButton CustomClick="something" />
<customs:myButton CustomClick="something" />
etc.
</StackPanel>
</UserControl>
자식 UserControl을에서 :
<UserControl>
<Grid>
<Button Click="Button_Click" />
</Grid>
</UserControl>
부모 UserControl을이 자식 컨트롤의 인스턴스로 구성되어
자식 UserControl을 격자 내부의 버튼입니다
public delegate void CustomClickHandler(object sender, EventArgs e);
public event CustomClickHandler CustomClick;
"내부"버튼은 다음과 같은 방식으로 click 이벤트를 처리합니다.
private void Button_Click(object sender, EventArgs e)
{
if (CustomClick != null)
CustomClick (sender, e);
}
나는 무슨 일이 일어나고 있는지 확인하기 위해 노력했습니다, 그리고 나는 Button_Click가 맞춤 클릭가 null는 아니고, 호출되고이 실행됩니다 볼 수 있습니다. 아무 것도 일어나지 않을 것입니다, 부모 usercontrol조차도 그것에 붙어있는 코드는 호출되지 않습니다.
의견이 있으십니까?
미리 감사드립니다. 건배, Gianluca.
답장을 보내 주셔서 감사합니다. 그게 문제라고 생각했고, 나는 버블 링을 스스로 구현하려고했습니다. lib가 이미 존재하는 것이 좋다. 그러나 나는 다른 문제에 직면하고있다 생각 : 나는 "탭"과 "myButton"의 여러 인스턴스를 통해 이동할 수 있지만 마우스를 사용하여 그들 중 누구와도 선택하거나 상호 작용할 수 없습니다 ... 당신은 이것을 생각합니까 문제가 어떻게 든 관련이 있습니까? –
라우트 이벤트가 마우스에만 해당되는 경우에는 단추 자체에 대한 이벤트 처리를 건너 뛸 수 있습니다.주에서 일합니까? 마우스가 움직이는 것처럼. –
빠른 업데이트. 상위 usercontrol은 다른 usercontrol 안에 있습니다 (shellView는 많은 키패드 버튼을 포함하는 키패드를 포함합니다). shellle에 정의 된 첫 번째 Grid에 대해 mouseleftdown 이벤트가 발생하는 것을 볼 수 있습니다. 다른 내부 컨트롤 중 하나에서 이벤트를 잡으려고하면 작동하지 않습니다. 어떤 생각? –