我想点击一个按钮,带我到一个页面,然后点击列表框项,点击新网页上的按钮,并将其传递回页面之前没有创建第一页的一个新的URI。
**First Page**
private void btnAddExistingMember_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/ChooseMember.xaml", UriKind.Relative));
}
**Second page after choosing listbox value**
private void btnAddSelected_Click(object sender, RoutedEventArgs e)
{
Member currMember = (Member)lstMembers.SelectedItem;
string memberID = currMember.ID.ToString();
//navigate back to first page here passing memberID
}
能不能做到?
谢谢
你可以存储在App.xaml.cs文件中的成员。 这是在应用程序中的所有文件共同文件易触及。 这就像一个全局变量。
//App.xaml.cs
int datafield ;
//Page1xaml.cs
(App.Current as App).dataField =10;
//Page2.xaml.cs
int x = (App.Current as App).dataField
您可以创建一个管理器类,将持有的会员ID。 这个管理器类然后可以从两个第一页和ChooseMember页面访问。
一个Singleton管理类的例子: -
public class MyManager
{
private static MyManager _instance;
public static MyManager Instance
{
get
{
if (_instance == null)
{
_instance = new MyManager();
}
return _instance;
}
}
}
我发现在CodeProject一个解决方案,它是对我非常有用。
而从第二形态移动,保存在数据PhoneApplicationService.Current.State
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
// Called when a page becomes the active page in a frame
base.OnNavigatedFrom(e);
// Text is param, you can define anything instead of Text
// but remember you need to further use same param.
PhoneApplicationService.Current.State["Text"] = txtboxvalue.Text;
}
回到使用相同NavigationService.GoBack();
和OnNavigatedTo
方法,取下面的代码。
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (PhoneApplicationService.Current.State.ContainsKey("Text"))
txtvalue.Text = (string)PhoneApplicationService.Current.State["Text"];
}
参考文献:
MSDN: PhoneApplicationService类
:在原来的解决方案如何通过在Windows Phone的网页之间的值
像你想设置一些对象为另一个页面的背景声音给我。 消息在MVVM光听起来像一个很好的解决方案。 看起来并不像你使用MVVM所以这可能不会立即应用。 这个职位几乎勾画出我的意思在这里。
第二页
创建SelectedObject财产,请确保调用
RaisePropertyChanged(SelectedObjectPropertyName, oldValue, value, true);
最后一个参数true
说要播出值这个变化给任何人听。 你需要线了其他一些命令的列表框选择项和按钮点击等,但我不会去,在这里,因为它不直接关系到你的问题。 选择列表框项目就像你要完成将只需设置数据项的第一页。 点击该按钮可以处理导航。
第一页
在你看来模型构建,注册以接收从第二页开始播出的变化
Messenger.Default.Register<PropertyChangedMessage<MyObject>>(this, (action) => UpdateObject(action.NewValue));
然后定义UpdateObject
private void UpdateObject(MyObject newObject)
{
LocalObjectProperty = newObject;
}
你可以简单地使用
//first page
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string value = string.Empty;
IDictionary<string, string> queryString = this.NavigationContext.QueryString;
if (queryString.ContainsKey("memberID"))
{
memberID = queryString["memberID"];
if (memberID != "-1")
//your code here
}
base.OnNavigatedTo(e);
}
//second page
private void btnAddSelected_Click(object sender, RoutedEventArgs e)
{
Member currMember = (Member)lstMembers.SelectedItem;
string memberID = currMember.ID.ToString();
string target = "/FirstPage.xaml";
target += string.Format("?memberID={0}", memberID);
NavigationService.Navigate(new Uri(target, UriKind.Relative));
}