所以这是我简单的Windows Phone 8问题:我在第1页有一个TextBox,然后输入:" 50"。
现在在第2页我想将我的值50除以2,并希望显示结果" 25" (希望我的计算正确;)
我该怎么做? :)
答案 0 :(得分:0)
您是否在第一页之后导航到第二页,如果是,则将值作为参数发送到导航中。即
NavigationService.Navigate(new Uri("/Page2.xaml?myNumber=" + myValue, UriKind.Relative));
显然,'myValue'需要替换一个带有你的值的变量,然后你可以像这样在Page2中检索onNavigatedTo事件的值。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var number = NavigationContext.QueryString["myNumber"];
}
答案 1 :(得分:0)
试试这个:
Page1.xaml.cs
private void Button_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Page2.xaml?myNumber=" + TextBox1.Text, UriKind.Relative));
}
Page2.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string QueryStr = "";
NavigationContext.QueryString.TryGetValue("myNumber",out QueryStr);
TextBlock1.text = ((int.Parse(QueryStr)) / 2).ToString();
}
答案 2 :(得分:0)
另一种解决方案 - 不是传递变量,而是可以将其设为静态,因此它可以通过整个应用程序使用,或保存在 PhoneState 中。一个简单的解决方案和绑定可以是这样的:
在XAML中 - TextBox:
<TextBox Text="{Binding TextBoxValue, Mode=TwoWay}" InputScope="Number" Width="50"/>
在代码中:
public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
{
private void RaiseProperty(string name) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name)); }
public static int globalValue = 0; // your global value
public string TextBoxValue
{
get { return globalValue.ToString(); }
set
{
if (!int.TryParse(value, out globalValue)) globalValue = 0; // some check-up if number is not valid
RaiseProperty("TextBoxValue"); // update textbox
}
}
public MainPage()
{
InitializeComponent();
DataContext = this; // here or in XAML
}
}
然后您可以访问变量的任何地方:
int a = MainPage.globalValue / 2;