Windows phone 7 如何在windows phone 8中从第2页更新第1页按钮的内容
我有两页。 i主页-其中包含一个按钮,显示用户选择的城市德法卢特德里 ii ListPage-其中包含此处显示的所有城市的列表框 所以,当用户单击主页中的按钮时,我将导航到ListPage以选择城市。 当用户单击列表中的任何城市时,我必须关闭该列表页面,然后立即将所选城市更新为主页中按钮的内容Windows phone 7 如何在windows phone 8中从第2页更新第1页按钮的内容,windows-phone-7,listbox,windows-phone-8,Windows Phone 7,Listbox,Windows Phone 8,我有两页。 i主页-其中包含一个按钮,显示用户选择的城市德法卢特德里 ii ListPage-其中包含此处显示的所有城市的列表框 所以,当用户单击主页中的按钮时,我将导航到ListPage以选择城市。 当用户单击列表中的任何城市时,我必须关闭该列表页面,然后立即将所选城市更新为主页中按钮的内容 请帮助我如何完成上述任务。如果您使用的是MVVM Light library,那么您可以像这样使用Messenger service 在选择更改后的第二页中发送消息 Messenger.Default.S
请帮助我如何完成上述任务。如果您使用的是MVVM Light library,那么您可以像这样使用Messenger service 在选择更改后的第二页中发送消息
Messenger.Default.Send<type>(message,token);
基本方法是实现PropertyChanged订阅
//In your HomePage class
HomePage()
{
ListPage.PropertyChanged +=this.CitySelected //Subscribe to the property changed event
}
void CitySelected(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "NewCity")
{
City selectedCity= (sender as ListPage).NewCity;
}
}
//In your ListPage class
//You should implement INotifyPropertyChanged interface:
ListPage:INotifyPropertyChanged
private city newCity;
public City NewCity
{
get{return newCity;}
set{
newCity=value;
NotifyChange("NewCity");
}
}
void CitySelected(City selected)
{
NewCity=selected;
}
public event PropertyChangedEventHandler PropertyChanged;
public delegate void PropertyChangeHandler(object sender, EventArgs data);
protected void NotifyChange(string args)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(args));
}
}
我建议您更改工作流以使用ListPicker控件。此控件与您在手机设置应用程序中看到的样式相匹配。ListPicker允许用户点击所选项目并导航到另一个页面,该页面为用户提供可用选项列表。这里有一个例子
<StackPanel>
<TextBlock Text="City"/>
<toolkit:ListPicker ExpansionMode="FullScreenOnly"
FullModeHeader="CITY"
ItemsSource="{Binding Cities}"
SelectedItem="{Binding SelectedCity}">
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<TextBlock Margin="0,20" Text="{Binding Name}" TextWrapping="Wrap"/>
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
</StackPanel>
您的DataContext看起来像
public class ViewModel : INotifyPropertyChanged
{
public ViewModel()
{
Cities = new List<City> { new City("Denver"), new City("New York") };
}
public City SelectedCity
{
{ get return _city; }
{ _city = value; OnpropertyChanged("SelectedCity"); }
}
public IEnumerable<City> Cities { get; private set; }
}
这将非常简单。您需要做的是,使用NavigationService.Navigate,然后将所选城市与主页页面uri一起追加,然后在主页页面中,使用NavigationContext.QueryString.TryGetValue检索所选城市,并在按钮中分配值 例如 在您的ListPage.cs中
NavigationService.Navigate(new Uri("/HomePage.xaml?selectedCity=" + "Coimbatore", UriKind.Relative));
在你的主页.cs中
string selectedCity = "";
NavigationContext.QueryString.TryGetValue("selectedCity", out selectedCity);
button.Content = selectedCity;
谢谢
NavigationService.Navigate(new Uri("/HomePage.xaml?selectedCity=" + "Coimbatore", UriKind.Relative));
string selectedCity = "";
NavigationContext.QueryString.TryGetValue("selectedCity", out selectedCity);
button.Content = selectedCity;