在我的主窗口中,我有一個包含文本框的子控件(用戶控件)。如何處理main(parent)窗口中的子控件文本框的textchange事件。如何處理父控制中的子事件
請爲我提供一些示例代碼,因爲我是新的事件路由。
在我的主窗口中,我有一個包含文本框的子控件(用戶控件)。如何處理main(parent)窗口中的子控件文本框的textchange事件。如何處理父控制中的子事件
請爲我提供一些示例代碼,因爲我是新的事件路由。
你應該只能夠鉤從父控件的事件。但是,因爲你的父母控制不具備TextChanged
事件它自己的,你需要使用附加屬性語法:
<Window ...
TextBox.TextChanged="ChildTextBoxChanged">
,並在您的代碼隱藏:
private void ChildTextBoxChanged(object sender, TextChangedEventArgs args)
{
...
}
你不必須將TextBox.TextChanged=
專門放在Window
上 - 只要是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事件
現在,您已經在您的childcontrol中創建了一個事件,當Textbox的文本c吊死火災。
現在你只添加一個處理此事件在主窗口 -
private void ChildControl_TextChanged(object sender, TextChangedEventArgs args)
{
//TODO: Add your further code here.
}
這也幫助了我。我將在子控件的容器中有一個事件,並在代碼隱藏文件中定義事件。該活動將處理所有兒童的所有文字改變事件。
<StackPanel TextBoxBase.TextChanged="test_TextChanged" Name="test">
<userControl/>
</StackPanel>
+1 - 有是如何在這裏聲明事件爲例:http://www.stevefenton.co.uk/Content/Blog/Date/201209/Blog/WPF-Bubbling-A-Command - 從-A-兒童瀏覽/ – Fenton