Windows Phone 8 - 将数据从文本框传递到另一页上的文本块

时间:2014-07-07 22:01:32

标签: c# silverlight windows-phone-8

所以这是我简单的Windows Phone 8问题:我在第1页有一个TextBox,然后输入:" 50"。

现在在第2页我想将我的值50除以2,并希望显示结果" 25" (希望我的计算正确;)

我该怎么做? :)

3 个答案:

答案 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;