我有一个小问题。 我有一个这样的数据模板:
<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页面,但我找不到控件的名称,它无法访问。
有什么想法吗?
答案 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模式这样的东西。