将具有非默认构造函数的页面加载到Frame中

时间:2011-10-08 11:05:16

标签: c# .net wpf

我正在尝试使用frame来托管不同类型的xaml页面。用户将选择要加载的页面 我想将一个带有非默认构造函数的页面加载到Frame中。 我在MSDN上找到了以下代码:

void hyperlink_Click(object sender, RoutedEventArgs e)
{
    // Instantiate the page to navigate to
    PageWithNonDefaultConstructor page = new PageWithNonDefaultConstructor("Hello!");

    // Navigate to the page, using the NavigationService
    this.NavigationService.Navigate(page);
}

上面的代码替换了当前显示的页面,但是我想将它加载到当前页面上的特定框架元素中。

<Frame Source="Default.xaml" />

如何做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用Frame of Frame而不是Source来解决问题。

//xaml
<Page x:Class="WpfApplication1.Something"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <StackPanel>
        <Button Click="Button_Click" Content="click"/>
        <Frame Content="{Binding}"/>
    </StackPanel>
</Page>

//codebehinde
private void Button_Click(object sender, RoutedEventArgs e)
{
    // Instantiate the page to navigate to
    Page1 page = new Page1("Hello!");
    this.DataContext = page;
}