private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Win1 OP= new Win1();
OP.show();
}
OP.show()拋出錯誤。如何使用按鈕單擊從另一個xaml窗口打開xaml窗口?
這是一個用戶控制表單。
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Win1 OP= new Win1();
OP.show();
}
OP.show()拋出錯誤。如何使用按鈕單擊從另一個xaml窗口打開xaml窗口?
這是一個用戶控制表單。
你說Win1
是 「這是一個用戶控件形式。」 (重點是我的)。
如果Win1
實際上是UserControl
類型,則問題是類型UserControl
未定義Show()
方法。所以它不能作爲一個窗口「打開」。
爲了解決這個問題,你需要打開一個窗口,並有UC的內容該窗口:
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
Win1 OP= new Win1();
var host = new Window();
host.Content = OP;
host.Show();
}
作爲一個側面說明,您可以使用UserControl
作爲App.xaml中StartupUri
,它會工作因爲框架認識到它不是一個窗口併爲它創建一個窗口。
+1,有幫助的帖子! :) –
打開一個窗口並關閉第一個:
private void Button_Click(object sender, RoutedEventArgs e)
{
window2 win2= new window2();
win2.Show();
this.Close();
}
你不能直接顯示usercontrol,你應該在另一個窗口中渲染你的usercontrol。
like。
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
UserControl1 uc1 = new UserControl1();
var win = new MainWindow();
win.Content = win1;
win.Show();
}
無法將UserControl作爲窗口或對話框打開。最好通過後面的代碼或XAML將usercontrol添加到某個Window中,然後打開該窗口。 不要忘記設置該窗口的DataContext。記住父控制/窗口的datacontext將由child controls/usercontrols繼承。
如果您想要做它像一個彈出:
private void btn1_click(object sender, RoutedEventArgs e)
{
newWin win2 = new newWin();
win2.Show():
}
所有這些答案都很好,但是他們沒有采取WPF's Navigation功能。如果您將要隱藏/關閉當前窗口,那麼這是對舊窗口管理的一個很好的選擇。而不是創建多個窗口,創建網頁和簡單地使用在主窗口的單一框架控件顯示它們:
<Grid>
<Frame Source="/Menu.xaml" NavigationUIVisibility="Hidden"/>
</Grid>
然後,當你想顯示另一個「窗口」(實際上是一個頁面),您可以使用NavigationService
改變框架源。從後面的菜單頁面代碼:
private void Button_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Contact.xaml", UriKind.Relative));
}
這將顯示聯繫頁面。使用此方法可確保窗口屬性標準化。一個窗口來統治他們!
謝謝穆爾梅爾!我用一些例子更新了回覆。 – Iridium237
什麼是錯誤? – jfin3204
不包含'show'的定義 – user2864566