我沒有一個開發環境中得心應手,所以我的道歉這是不準確的,但此方法應爲你工作,是我做這樣的事情的首選方式。
這是我用僞代碼標記層次的理解:
<Page2>
<Textbox ID="MyTextbox" />
<Control ID="Page1">
<Button ID="MyButton" />
</Control>
</Page2>
有了這樣的認識,這聽起來像你需要做的是注入的句柄,您的文本框爲你的下級控制的屬性是什麼:
// Page1 code
public TextBox TextboxToUpdateWhenYouPressTheButton { get; set; }
Click()
{
// Perform Not Null Check and handle it somehow if it is null.
// Set the text.
TextboxToUpdateWhenYouPressTheButton.Text = "This is the text that goes into the textbox.";
}
這樣做,無論何時創建Page1,只需將文本框的句柄傳遞到內部控件上的新TextBoxToUpdateWhenYouPressTheButton屬性即可。最終,這個想法保持不變,我們只通過這個屬性而不是直接訪問它。這將允許您的控件在多個屏幕上使用,而不管文本框被調用的是什麼。這樣,爲了讓頁面「消費」控件,需要先「註冊」該文本框。
好的,但在Page1我沒有看到實際打開的Page2(並打開它)。主要問題是Page2已經加載並打開。 – Rafal 2010-03-26 14:40:57
因此,Page1和Page2是同時打開的?如果您點擊Page1上的按鈕但第2頁已打開,我在這裏有點困惑。 – Jaxidian 2010-03-26 14:47:40
Page1是一個內部有按鈕的用戶控件。 Page2是Page1的父項。然而,我不能調用父屬性,因爲我使用Click事件女巫通行證:AddButtonControl_Click(對象發件人,RoutedEventArgs e) – Rafal 2010-03-26 14:59:03