【问题标题】:Multiple pages WPF same components多页 WPF 相同组件
【发布时间】:2018-04-13 20:42:09
【问题描述】:

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

页面与主页面具有相同的组件,但颜色不同。

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

  • 由于我有错误说没有方法定义为 .Close 或 Dragmove 我将其从 Optimizer.xaml 中删除

2) 页面不会改变:

private void Search_Click(object sender, RoutedEventArgs e)
{
    Main.Content = new Optimizer();
....}

页面设计(与 main 相同,只是更改了颜色以进行检查):

<Page x:Class="Tool.Optimizer"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:Tool"
      mc:Ignorable="d" 
      d:DesignHeight="637" d:DesignWidth="975.5"
      Title="Optimizer">
    <Grid>
        <Grid Opacity="0.6"/>
        <Image Margin="155,0,0,0" Source="Background.jpg" Stretch="Fill" Opacity="0.8"/>
        <Grid HorizontalAlignment="Left" Width="235" Background="#FFF30909" 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}" 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" 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" 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">
                <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>
</Page>

主要 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。几年前我写了一篇介绍,应该仍然能让你走上正轨:social.msdn.microsoft.com/Forums/vstudio/en-US/…

标签: c# wpf navigation frame


【解决方案1】:

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

【讨论】:

  • 我收到很多错误说:“优化器”不包含...的定义,它适用于页面中的所有组件。
  • 试试Main.Navigate(new Optimizer());
  • 发布 Window 和 Page 的整个视图,如果您在 post 后面做了任何代码,也请。
  • 可以工作,但是看起来框架出现在主窗口上方,而不是现在我的窗口上有 2 个框架。
  • 您的框架位于网格中窗口上其他所有内容的后面。我不确定你在说什么关于两个框架,但你的框架顶部有你的窗口视觉效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 2019-07-09
相关资源
最近更新 更多