将页面checkBox值传递给其他类

时间:2010-12-14 20:47:00

标签: c# silverlight silverlight-4.0 windows-phone-7

我一直在阅读其他问题和页面并看到了一些想法,但无法理解它们或让它们正常工作。

我的例子:

我的mainpage.xaml上有这个checkBox1

 <CheckBox Content="Central WC / EC" Height="68" HorizontalAlignment="Left" Margin="106,206,0,0" Name="checkBox1" VerticalAlignment="Top" BorderThickness="0" />

我在anotherpage.xaml.cs上有一个另外的.xaml及其c#:

 public void Feed(object Sender, DownloadStringCompletedEventArgs e)
    {
        if (checkBox1.Checked("SE" == (_item.Sector))) ; 
        {

        }
     }

如何将mainpage.xaml上checkBox1的值传递给anotherpage.xaml.cs

2 个答案:

答案 0 :(得分:1)

打开下一页时,您可以通过是否选中该复选框:

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chkd=" + checkBox1.IsChecked, UriKind.Relative));

然后,您可以在“其他”页面的OnNavigatedTo事件中进行查询:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string isChecked;
    if (NavigationContext.QueryString.TryGetValue("chkd", out isChecked))
    {
        if (bool.Parse(isChecked))
        {
            //
        }
    }
}

修改
要传递多个值,只需将它们添加到查询字符串中:

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chk1=" + checkBox1.IsChecked + "&chk2=" + checkBox2.IsChecked, UriKind.Relative));

(你可能想要更好地格式化代码)

然后,您可以从

依次获取每个参数
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string is1Checked;
    if (NavigationContext.QueryString.TryGetValue("chk1", out is1Checked))
    {
        if (bool.Parse(is1Checked))
        {
            //
        }
    }

    string is2Checked;
    if (NavigationContext.QueryString.TryGetValue("chk2", out is2Checked))
    {
        if (bool.Parse(is2Checked))
        {
            //
        }
    }
}

由于您希望传递越来越多的值,因此会出现大量重复代码。不是单独传递多个值,而是可以将它们连接在一起:

var checks = string.Format("{0}|{1}", checkBox1.IsChecked, checkBox2.IsChecked);

NavigationService.Navigate(new Uri("/AnotherPage.xaml?chks=" + checks, UriKind.Relative));

然后您可以拆分字符串并分别解析部分。

答案 1 :(得分:0)

您可以在App类中声明一个公共属性。

public partial class App : Application
{
    public int Shared { set; get; }
    //...
}

然后您可以通过以下方式从页面访问它:

(Application.Current as App).Shared

您可以存储对表单的引用,或者放置一个事件或您想要执行的任何其他操作。

另外,我强烈推荐Petzold's WP7 book free for download