주 창에는 텍스트 상자가 포함 된 자식 컨트롤 (사용자 정의 컨트롤)이 있습니다. 메인 (부모) 윈도우에서 자식 컨트롤의 텍스트 상자의 텍스트 변경 이벤트를 처리하려면 어떻게해야합니까?부모 컨트롤에서 자식 이벤트를 처리하는 방법
이벤트 라우팅에 익숙하지 않으므로 코드 예제를 제공해주십시오.
주 창에는 텍스트 상자가 포함 된 자식 컨트롤 (사용자 정의 컨트롤)이 있습니다. 메인 (부모) 윈도우에서 자식 컨트롤의 텍스트 상자의 텍스트 변경 이벤트를 처리하려면 어떻게해야합니까?부모 컨트롤에서 자식 이벤트를 처리하는 방법
이벤트 라우팅에 익숙하지 않으므로 코드 예제를 제공해주십시오.
당신은 부모 컨트롤에서 이벤트를 후크 할 수 있어야한다.
<Window ...
TextBox.TextChanged="ChildTextBoxChanged">
하고 코드 숨김에서 : 당신의 부모 컨트롤 자체의 TextChanged
이벤트를 가지고 있지 않기 때문에, 당신은 첨부 재산권 구문을 사용해야합니다
private void ChildTextBoxChanged(object sender, TextChangedEventArgs args)
{
...
}
당신은하지 않습니다 Window
에 TextBox.TextChanged=
을 넣어야합니다. 즉 TextBox
의 부모 인 컨트롤 즉, UserControl
의 부모 인 모든 컨트롤을 넣어야합니다. 이 행사는 각 학부모에게 차례로, 최상위 레벨 인 Window
까지 펼쳐질 것이며 길을 따라 어디에서나 처리 될 수 있습니다.
e.Handled = true
를 설정하면 여러 수준에서 핸들러가있는 경우, 이벤트가 그 시점 과거 없습니다 거품. 유용한 알고 않습니다.) 이것은 또한 나에게 도움이
당신의 childcontrol에서 이벤트 만들기 -
private void TextBox_TextChanged(object sender, TextChangedEventArgs args)
{
if (TextChanged != null)
{
TextChanged.Invoke(this, args);
}
}
는이 핸들러에 대한 XAML을 업데이트 - -
<TextBox ... TextChanged="TextBox_TextChanged" ... />
을
이
public event TextChangedEventHandler TextChanged;
지금 childcontrol에서 텍스트 상자의 TextChanged 이벤트에 대한 처리기를 추가
이제 Textbox의 textc가 실행될 때 발생하는 이벤트를 자식 컨트롤에 만들었습니다 교수형.
지금 만 MainWindow를이 이벤트에 대한 처리기를 추가합니다 -private void ChildControl_TextChanged(object sender, TextChangedEventArgs args)
{
//TODO: Add your further code here.
}
. 자식 컨트롤의 컨테이너에 이벤트가 있고 코드 숨김 파일에 이벤트가 정의됩니다. 이 이벤트는 모든 자식에 대해 변경된 모든 텍스트를 처리합니다.
<StackPanel TextBoxBase.TextChanged="test_TextChanged" Name="test">
<userControl/>
</StackPanel>
하나는 - 여기에 이벤트를 선언하는 방법에 대한 예제가있다 : http://www.stevefenton.co.uk/Content/Blog/Date/201209/Blog/WPF-Bubbling-A-Command -From-A-Child-View / – Fenton