Set Window.Content to a page by XAML?

2019-02-23 01:50发布

问题:

<Window x:Class="MyWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:WpfApplication1"
    Title="ContactsSelector" Height="300" Width="300">
    <Window.Content>
        <src:MyPage>
           <!--MyPage is a page that I created and exists in the project--> 
        </src:MyPage>
    </Window.Content>
</Window>

I want to set the content of a window to a page, just like I would do it programmatically:

Dim w As New MyWindow
Dim p As New MyPage
w.Content = p
w.ShowDialog()

Or set it in the Load event of the window, summarily I want it to be done in xaml.

回答1:

Use a Frame element to show the content of the page.

<Window> <Frame Source="/Pages/MyPage.xaml"/> </Window>


回答2:

Try something like this, where MyPageAssembly points to the assembly where your page resides, and MyPage is the name of the Page.

<Window 
    x:Class="MyWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:MyPageAssembly="clr-namespace:MyPage;assembly=MyPageAssembly"
    Title="ContactsSelector" 
    Height="300" 
    Width="300"
    >
    <Window.Content>
        <MyPageAssembly:MyPage />
    </Window.Content>
</Window>


标签: wpf xaml window