2013-07-02 15 views
0

我有兩個頁面。 我)首頁 - 這包含一個按鈕來顯示用戶所選城市(由defalut德里) II)末頁 - 哪些包含列表框中(所有城市在這裏展示)如何更新Windows Phone 8頁面2中的page1按鈕的內容

所以當用戶單擊主頁上的按鈕,然後我將導航到ListPage以選擇城市。 當用戶點擊列表中的任何城市時,我不得不關閉該ListPage,然後立即將所選城市更新爲主頁中的按鈕內容。

請幫助我如何完成上述任務。

回答

0

如果您正在使用「MVVM光」庫,然後就可以使用Messenger服務像這樣....

在選擇後第二頁

改變發送消息

Messenger.Default.Send<type>(message,token); 

,然後在第1頁視圖模型的consructor

Messenger.Default.Register<type>(this,token,Method); 

這裏令牌應該是相同發件人令牌....

然後

void Method(type message) 
{ 
    button.content = message; 
} 
0

基本的方法是實現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)); 
    } 
} 
0

我建議你改變你的工作流程以使用Windows Phone Toolkit 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; } 
} 
0

這會是非常簡單的。您需要做的是使用NavigationService.Navigate(),然後將所選城市和主頁uri一起附加到主頁頁面中,使用NavigationContext.QueryString.TryGetValue()檢索選定的城市,並在您的按鈕。

對於離,

在你ListPage.cs,

NavigationService.Navigate(new Uri("/HomePage.xaml?selectedCity=" + "Coimbatore", UriKind.Relative)); 

在你HomePage.cs,

string selectedCity = ""; 
NavigationContext.QueryString.TryGetValue("selectedCity", out selectedCity); 
button.Content = selectedCity; 

感謝

相關問題