【问题标题】:How to get Value of another Page in UWP如何在 UWP 中获取另一个页面的值
【发布时间】:2016-05-07 12:17:53
【问题描述】:

我不知道如何开始,所以我只是从截图和它的代码开始:


MainPage.xaml

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition Height="48"/>
    </Grid.RowDefinitions>

    <Frame x:Name="MainContent"/>

    <Grid Grid.Row="1" Background="Gray">
        <TextBlock x:Name="ResultTB"
                   VerticalAlignment="Center"
                   Text="Should also be here"
                   HorizontalAlignment="Center"/>
    </Grid>

</Grid>

MainPage.xaml.cs

public MainPage()
    {
        InitializeComponent();
        MainContent.Navigate(typeof(ContentFrame));
    }

ContentFrame.xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <TextBox x:Name="Input"
             VerticalAlignment="Center"
             HorizontalAlignment="Center"
             Width="200"/>
</Grid>

现在我想对 ResultTB 的 Input 文本进行评分。最简单、最好的方法是什么?

【问题讨论】:

    标签: c# xaml win-universal-app


    【解决方案1】:

    对于任何在未来寻找这个的人 - 与 Alexej 的答案有点相似但更简单: 例如,假设我想更改 MainPage 中的对象 "SomeObject" (x:Name = "SomeObject") 的文本:

    MainPage mainFrame = (MainPage)((Frame)Window.Current.Content).Content;
    mainFrame.SomeObject = "my text";
    

    【讨论】:

      【解决方案2】:

      您可以使用 Navigate 方法的覆盖:Frame.Navigate(TypeName, Object)

      Object 是参数。您可以在 OnNavigatedTo 事件中进入另一个页面。比如:

      string txt=ResultTB.Text;
      MainContent.Navigate(typeof(ContentFrame), txt);  
      

      在另一个页面上添加 OnNavigatedTo 事件并在里面:

      var parameter = e.Parameter as string;
      

      【讨论】:

      • 是的,但我的意思是当两者都已经加载并且我更改了文本时。我怎样才能告诉另一个框架上的 ResultTB-Textblock 将他的值更改为它?
      • 最好的方法是使用 MVVM 设计模式。您将在两个页面之间创建一个共享视图模型,这意味着每当更新字符串属性时,它也会更新另一个控件。
      • 从字面上看,你可以创建一些全局对象并将数据绑定到它
      猜你喜欢
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2016-10-06
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多