C# 多页WPF相同组件

C# 多页WPF相同组件,c#,wpf,navigation,frame,C#,Wpf,Navigation,Frame,我创建了一个主窗口和两个页面 这些页面的组件与主页相同,但颜色不同 1) 是否需要检查所有组件的名称,以使其与主组件不同 由于我错误地说没有方法定义为.Close或Dragmove,所以我从Optimizer.xaml中删除了它 2) 页面不会更改: private void Search_Click(object sender, RoutedEventArgs e) { Main.Content = new Optimizer(); ....} 页面设计(与main相同,只是更改

我创建了一个主窗口和两个页面

这些页面的组件与主页相同,但颜色不同

1) 是否需要检查所有组件的名称,以使其与主组件不同

  • 由于我错误地说没有方法定义为.Close或
    Dragmove
    ,所以我从
    Optimizer.xaml中删除了它
2) 页面不会更改:

private void Search_Click(object sender, RoutedEventArgs e)
{
    Main.Content = new Optimizer();
....}
页面设计(与main相同,只是更改了颜色以进行检查):


主要XAML:

<Window x:Name="GUI" x:Class="Tool.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:Tool"
        mc:Ignorable="d"
        Title="MainWindow" Height="637" Width="975.5" AllowsTransparency="True" WindowStyle="None" ResizeMode="CanResizeWithGrip">
    <Window.Background>
        <SolidColorBrush Color="White" Opacity="0.2"/>
    </Window.Background>
    <Grid MouseDown="Grid_MouseDown">
        <Frame x:Name = "Main"/>
        <Grid Opacity="0.6"/>
        <Image Margin="155,0,0,0" Source="Background.jpg" Stretch="Fill" Opacity="0.8"/>
        <Grid HorizontalAlignment="Left" Width="235" Background="White" Opacity="1
              ">
            <Button x:Name="Search" Content="&#xE71E;" HorizontalAlignment="Left" Height="33" Margin="184,252,0,0" VerticalAlignment="Top" Width="47" FontFamily="Segoe MDL2 Assets" Background="{x:Null}" Click="Search_Click" FontSize="16"/>
        </Grid>
        <Image Source="Icon.ico" Stretch="Fill" RenderTransformOrigin="0.52,0.125" HorizontalAlignment="Left" Width="229" Height="132" VerticalAlignment="Top" Margin="6,0,0,0"/>
        <Grid Margin="0,0,0,597">
            <Button x:Name="Close" Content="&#xEF2C;" Height="40" VerticalAlignment="Top" Background="{x:Null}" FontFamily="Segoe MDL2 Assets" Foreground="White" Click="Close_Click" HorizontalAlignment="Right" Width="40" Margin="0,0,1,0">
                <Button.BorderBrush>
                    <SolidColorBrush Color="#FF2C46BB" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
            <Button x:Name="Maximize" Content="&#xEF2E;" Height="40" Margin="0,0,41,0" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" Background="{x:Null}" Foreground="White" Click="Maximize_Click" HorizontalAlignment="Right" Width="40" >
                <Button.BorderBrush>
                    <SolidColorBrush Color="#FF2C46BB" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
            <Button x:Name="Minimize" Content="&#xEF2D;" Margin="0,0,81,0" Background="{x:Null}" FontFamily="Segoe MDL2 Assets" Foreground="White" HorizontalAlignment="Right" Width="40" Height="40" VerticalAlignment="Top" Click="Minimize_Click">
                <Button.BorderBrush>
                    <SolidColorBrush Color="Black" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
        </Grid>
        <TextBox x:Name="Username" TextAlignment="Center" HorizontalAlignment="Left" Height="33" Margin="16,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="168" FontSize="16"/>
        <TextBlock HorizontalAlignment="Left" Height="120" Margin="16,132,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225" FontSize="20"><Run Text="Welcome to Osrs Tool!"/><LineBreak/><Run/><LineBreak/><Run Text="Please Enter your Username:"/><LineBreak/><Run/></TextBlock>

    </Grid>
</Window>


不,这是安全的,名称是每页的,属于那种类型,因此它与在多个对象中使用相同的名称一样安全

我收到了很多错误,说:'优化器'不包含一个定义。。。。它适用于页面中的所有组件发布窗口和页面的整个视图,如果您已经完成了任何代码隐藏,也请发布。尽管如此,框架似乎出现在主窗口上方,而不是主窗口上方,因此现在我的窗口上有两个框架。您的框架位于网格中窗口上其他所有内容的后面。我不知道你是怎么说两个框架的,但是你的框架上面有你的窗口视觉效果。是的。WPF/UWP和XAML在设计时考虑了MVVM模式。虽然您可以使用其他模式,但这样做会丢失大约90%的功能,并在其他每个角落都会遇到问题。考虑到您提出的关于代码隐藏的问题/工作的数量,我高度怀疑这是一种合适的MVVM模式。如果你打算留在WPF,你一定要学习MVVM。几年前我写了一篇介绍,应该仍然能让你走上正轨:
<Window x:Name="GUI" x:Class="Tool.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:Tool"
        mc:Ignorable="d"
        Title="MainWindow" Height="637" Width="975.5" AllowsTransparency="True" WindowStyle="None" ResizeMode="CanResizeWithGrip">
    <Window.Background>
        <SolidColorBrush Color="White" Opacity="0.2"/>
    </Window.Background>
    <Grid MouseDown="Grid_MouseDown">
        <Frame x:Name = "Main"/>
        <Grid Opacity="0.6"/>
        <Image Margin="155,0,0,0" Source="Background.jpg" Stretch="Fill" Opacity="0.8"/>
        <Grid HorizontalAlignment="Left" Width="235" Background="White" Opacity="1
              ">
            <Button x:Name="Search" Content="&#xE71E;" HorizontalAlignment="Left" Height="33" Margin="184,252,0,0" VerticalAlignment="Top" Width="47" FontFamily="Segoe MDL2 Assets" Background="{x:Null}" Click="Search_Click" FontSize="16"/>
        </Grid>
        <Image Source="Icon.ico" Stretch="Fill" RenderTransformOrigin="0.52,0.125" HorizontalAlignment="Left" Width="229" Height="132" VerticalAlignment="Top" Margin="6,0,0,0"/>
        <Grid Margin="0,0,0,597">
            <Button x:Name="Close" Content="&#xEF2C;" Height="40" VerticalAlignment="Top" Background="{x:Null}" FontFamily="Segoe MDL2 Assets" Foreground="White" Click="Close_Click" HorizontalAlignment="Right" Width="40" Margin="0,0,1,0">
                <Button.BorderBrush>
                    <SolidColorBrush Color="#FF2C46BB" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
            <Button x:Name="Maximize" Content="&#xEF2E;" Height="40" Margin="0,0,41,0" VerticalAlignment="Top" FontFamily="Segoe MDL2 Assets" Background="{x:Null}" Foreground="White" Click="Maximize_Click" HorizontalAlignment="Right" Width="40" >
                <Button.BorderBrush>
                    <SolidColorBrush Color="#FF2C46BB" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
            <Button x:Name="Minimize" Content="&#xEF2D;" Margin="0,0,81,0" Background="{x:Null}" FontFamily="Segoe MDL2 Assets" Foreground="White" HorizontalAlignment="Right" Width="40" Height="40" VerticalAlignment="Top" Click="Minimize_Click">
                <Button.BorderBrush>
                    <SolidColorBrush Color="Black" Opacity="0"/>
                </Button.BorderBrush>
            </Button>
        </Grid>
        <TextBox x:Name="Username" TextAlignment="Center" HorizontalAlignment="Left" Height="33" Margin="16,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="168" FontSize="16"/>
        <TextBlock HorizontalAlignment="Left" Height="120" Margin="16,132,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225" FontSize="20"><Run Text="Welcome to Osrs Tool!"/><LineBreak/><Run/><LineBreak/><Run Text="Please Enter your Username:"/><LineBreak/><Run/></TextBlock>

    </Grid>
</Window>