通用Windows:如何访问另一个页面中的元素?

时间:2017-02-06 08:27:46

标签: win-universal-app

我的UWP项目共有2页。

在下一页中,我宣布一个WebView对象。

<Page
    x:Class="UniversalMarkdownTestApp.WebViewPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UniversalMarkdownTestApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <WebView Name="WebContent" Grid.Row="0" x:FieldModifier="public"/>
    </Grid>
</Page>

现在我想在其他页面中访问此对象。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以通过以下代码访问其他页面中的此对象:

MainPage mainpage = new MainPage();
var webv = mainpage.WebContent;

但正如AbsoluteSith所说,这个对象的实例已经创建,如果你想将它添加到新页面,你就无法直接添加。

您需要使用此对象的属性值来创建新对象。请参阅以下代码:

MainPage mainpage = new MainPage();
var webv = mainpage.WebContent;

WebView wv = new WebView();
wv.Source = webv.Source;
grid.Children.Add(wv);

还有另一种在其他页面中获取对象的方法。您可以在导航时将对象作为参数传递。请参阅以下代码:

rootFrame.Navigate(typeof(BlankPage),WebContent);
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    WebView wv = new WebView();
    wv.Source = ((WebView)e.Parameter).Source;
    gd.Children.Add(wv);
}

在这里,我仍然不确定你为什么要这样做。一般来说,我不建议在页面之间进行控制。也许,如果你能告诉我们你的要求,或者你想达到什么样的效果,可能会有更好的解决方案。