【问题标题】:navigate through frame or text block浏览框架或文本块
【发布时间】:2016-09-08 11:26:04
【问题描述】:

enter image description here想要从包含文本块的框架中导航,我正在尝试在 mainpage.xaml 和 mainpage.xaml.cs 给出下面的代码,但没有任何反应。请帮助我,我是 uwp -app dev 和任何新手建议请提供

<Grid Grid.Row="2" Background="Transparent">
            <Image Source="Assets\info_footer.png"  Stretch="Fill" />
            <TextBlock  Text="Sign in" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="4,4,200,3" FontSize="32" />
            <TextBlock  Text="Sign up" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="190,4,10,3" FontSize="32"/>
            <Frame Name="MyFrame" Margin="4,4,220,3" Tapped="MyFrame_Tapped" >



            </Frame>
            <Frame Name="MyFrame1" Margin="210,4,10,3" Tapped="MyFrame1_Tapped" >

            </Frame>

namespace CustomSplash
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    /// 

    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            RemoveGap();
        }
        public async void RemoveGap()
        {

            await StatusBar.GetForCurrentView().HideAsync();
        }

        private void MyFrame_Tapped(object sender, TappedRoutedEventArgs e)
        {
            Frame.Navigate(typeof(signin));
        }

        private void MyFrame1_Tapped(object sender, TappedRoutedEventArgs e)
        {
            Frame.Navigate(typeof(signup));
        }
    }

}

【问题讨论】:

  • “帮我学习编程”类型的问题对未来的访问者没有用处。投票结束。

标签: navigation uwp uwp-xaml


【解决方案1】:

我同意@IInspectable cmets

说“帮助我学习编程”类型的问题对 未来的访客。

但是,我的回答将纠正您正在做的错误,并将推动您朝着正确的方向前进。

您的网格应该如下所示

<Grid Grid.Row="2" Background="Transparent">
    <Image Source="Assets\info_footer.png"  Stretch="Fill" />
    <TextBlock  Text="Sign in" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="32" Tapped="TextBlock_Tapped"/>
    <TextBlock  Text="Sign up" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="32" Tapped="TextBlock_Tapped"/>
    <Frame Name="MyFrame" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" />
</Grid>

当您在带有用于显示不同视图的框架的页面中时,您不需要为每个页面使用多个框架。您可以使用单帧导航。但是,我建议您直接导航到该页面,因为从用户的角度来看,当他们仍然导航到这些页面时,用户仍然会看到 Sign Up / Sign In 按钮。但如果它仍然是一个要求。你的网格应该像上面那样。

如果您看到我从 Frame 中删除了您的 Tapped 事件并移至 TextBlock,因为您希望用户点击并导航到相应的页面。

我将MyFrameHorizontalAlignmentVerticalAlignment 更改为Stretch。为什么?因为现在它将填满整个空间,无需使用Margin

现在开始您的点按活动。

private void MyFrame_Tapped(object sender, TappedRoutedEventArgs e)
{
    TextBlock textBlock = (TextBlock)sender;
    switch(textBlock.Text)
    {
        case "Sign in":
            MyFrame.Navigate(typeof(signin));
            break;
        case "Sign up":
            MyFrame.Navigate(typeof(signup));
            break;
    }
}

在 XAML 中,您可以看到我在两个 TextBlock 上使用了相同的 Tapped Event。在事件本身中,我正在使用 TextBlock textBlock = (TextBlock)sender; 检查正在调用哪个 TextBlock,以便获得正确的 TextBlock。由于两者的 TextBlock 文本属性不同,因此我正在使用它切换到适当的页面并导航到与 TextBlocks 相关的页面。

祝你好运,编码愉快。

【讨论】:

  • 好答案 ;)。
  • 嗨 AVK 我尝试了上面的代码更改,但它没有按预期工作首先它给出错误 CS1061 'MainPage' 不包含 'TextBlock_Tapped' 的定义并且没有扩展方法 'TextBlock_Tapped' 接受第一个参数可以找到“MainPage”类型的。后来我删除并检查了,但在这种情况下,输出将是这样的重叠“登录和注册”文本块,即使在点击时它也不会导航到下一页
  • 感谢 AVK 终于有帮助了 :)
猜你喜欢
  • 2016-08-23
  • 2011-03-27
  • 2018-08-05
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多