我一直在阅读其他问题和页面并看到了一些想法,但无法理解它们或让它们正常工作。
我的例子:
我的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
答案 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。