在页面之间传递数据wp7

时间:2012-02-24 12:23:01

标签: c# xaml windows-phone-7 datatemplate

我有一个小问题。 我有一个这样的数据模板:

    <phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="DangersItemTemplate">
        <Grid Height="102" Width="447" Tap="Grid_Tap">
            <Image Name="image" Source="{Binding Image}" HorizontalAlignment="Left" Width="90" />
            <TextBlock Name="text" Text="{Binding Nom}" TextWrapping="Wrap" Margin="102,16,16,22"/>
        </Grid>
    </DataTemplate>
</phone:PhoneApplicationPage.Resources>

我想使用CSharp代码中的Textlock控件将Text属性传递给第二个xaml页面,但我找不到控件的名称,它无法访问。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我只是使用VB.Net,但我相信你可以转换。 只需在应用程序中使用任何共享变量。 在这里,您可以在SourceCode示例中看到它:

http://www.activevb.de/rubriken/kolumne/kol_30/res/nachtscanner.zip

只需使用Public Shared MyText As String 在应用程序类中。您可以在任何地方访问此可修复程序。 您还可以使用INotifyPropertyChanged来绑定该共享属性。

或者,您可以使用导航查询。在这里阅读更多内容:

How can I pass query string variables with NavigationService.Navigate?

答案 1 :(得分:0)

您绑定TextBlock的Text,因此您必须拥有datacontext中的值。我将此值添加到Querystirng并导航到该页面。

var text = ((Whatever) DataContext).Nom;
string page2Uri = string.Foramt("/PAge2.xaml?Nom={0}", text);
NavigationService.Navigate(new Uri(page2Uri, UriKind.Relative));

然后要从查询字符串中获取数据,您可以在页面中使用OnNavigatedTo方法,然后检查this.NavigationContext.QueryString [“nom”]

或者看看像MVVM模式这样的东西。