在不打开新的情况下导航到另一个 wpf windows
Navigate to another wpf without opening new windows
我是 WPF 新手,我找不到在同一个主 WPF 应用程序上打开新 WPF window 的方法
我尝试了框架方法,这是代码:-
<Window x:Class="WPF_FINAL.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_FINAL"
mc:Ignorable="d"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
Background="{DynamicResource MaterialDesignPaper}"
Height="768"
Width="1366"
WindowState="Maximized"
Title="MainWindow">
<Grid Background="#dff9fb"
Margin="33,10,-33,-10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="13.5" />
<ColumnDefinition Width="152" />
<ColumnDefinition Width="auto"
MinWidth="335.5" />
<ColumnDefinition />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Frame Margin="0,0,0.5,10"
Grid.ColumnSpan="5"
x:Name="main"
Grid.RowSpan="6">
</Frame>
</Grid>
</Window>
cs码
main.Content = new Window1();
但是当我 运行 它给了我中断异常
我也试过导航服务,但我发现它只与页面相关联
任何建议如何做到这一点?
谢谢
Frame
可以托管任何内容,甚至 HTML。
Page
仅公开像 NavigationService
这样的特殊助手,使页面之间的导航更加方便。
A Window
不能是另一个元素的 child,例如child 个 Frame
。它必须是根元素。通过将 Window
分配给 Frame.Content
,Frame
变成了 Window
的 parent,这是非法的。
一个简单的解决方案是将 Window1
class 转换为 UserControl
:
<UserControl x:Class="MyUserControl">
<TextBlock Text="TEST CONTROL" FontSize="25"/>
</UserControl>
现在您的作业将生效:
main.Content = new MyUserControl();
或
main.Navigate(new MyUserControl());
或
main.Navigate("file path to/MyUserControl.xaml");
我是 WPF 新手,我找不到在同一个主 WPF 应用程序上打开新 WPF window 的方法 我尝试了框架方法,这是代码:-
<Window x:Class="WPF_FINAL.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_FINAL"
mc:Ignorable="d"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
TextElement.FontWeight="Regular"
TextElement.FontSize="13"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextRenderingMode="Auto"
Background="{DynamicResource MaterialDesignPaper}"
Height="768"
Width="1366"
WindowState="Maximized"
Title="MainWindow">
<Grid Background="#dff9fb"
Margin="33,10,-33,-10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="13.5" />
<ColumnDefinition Width="152" />
<ColumnDefinition Width="auto"
MinWidth="335.5" />
<ColumnDefinition />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="20" />
</Grid.RowDefinitions>
<Frame Margin="0,0,0.5,10"
Grid.ColumnSpan="5"
x:Name="main"
Grid.RowSpan="6">
</Frame>
</Grid>
</Window>
cs码
main.Content = new Window1();
但是当我 运行 它给了我中断异常 我也试过导航服务,但我发现它只与页面相关联 任何建议如何做到这一点? 谢谢
Frame
可以托管任何内容,甚至 HTML。
Page
仅公开像 NavigationService
这样的特殊助手,使页面之间的导航更加方便。
A Window
不能是另一个元素的 child,例如child 个 Frame
。它必须是根元素。通过将 Window
分配给 Frame.Content
,Frame
变成了 Window
的 parent,这是非法的。
一个简单的解决方案是将 Window1
class 转换为 UserControl
:
<UserControl x:Class="MyUserControl">
<TextBlock Text="TEST CONTROL" FontSize="25"/>
</UserControl>
现在您的作业将生效:
main.Content = new MyUserControl();
或
main.Navigate(new MyUserControl());
或
main.Navigate("file path to/MyUserControl.xaml");