Si vous créez un nouveau projet Windows Phone et utiliser le Windows Phone lié aux données de Modèle , vous aurez la plupart du travail pour vous.
Ce que vous voulez faire est d'installer le ViewModel pour contenir toutes les données pour votre application. Vous pouvez sérialiser et désérialiser les données à l'aide de IsolatedStorage de sorte qu'il est enregistré à travers les sessions de l'application et lors de la Désactivation.
Dans le modèle, vous remarquerez MailViewModel et ItemViewModel. MainViewModel stocke toutes les données que votre application a besoin, y compris une ObservableCollection de ItemViewModel, et ItemViewModel représente chaque type de données pour votre application.
Sur le DetailsPage.xaml page, vous aurez envie de DataBind chaque zone de texte de l'Application.MainViewModel Éléments. La valeur la liaison Bidirectionnelle si vous voulez que le ViewModel mis à jour dès que l'utilisateur manipule les données sur DetailsPage.xaml. Vous pouvez également définir la Liaison Unidirectionnelle et un bouton OK qui écrit les modifications dans le ViewModel et les enregistre à l'IsolatedStorage.
Voici un exemple de ce qu'est une Liaison ressemble:
<TextBlock x:Name="ListTitle" Text="{Binding LineOne}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
Dans ce cas LineOne est une propriété de ItemViewModel et la page est-ce des données à partir de la chaîne de requête lorsque l'utilisateur sélectionne un élément de la page d'accueil.xaml. Le DataContext de la page determs où les informations liées aux données.
Voici l'extrait où la page d'accueil passe à l'élément sélectionné dans le ViewModel de la DetailsPage.
// Handle selection changed on ListBox
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// If selected index is -1 (no selection) do nothing
if (MainListBox.SelectedIndex == -1)
return;
// Navigate to the new page
NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + MainListBox.SelectedIndex, UriKind.Relative));
// Reset selected index to -1 (no selection)
MainListBox.SelectedIndex = -1;
}
Voici comment le DetailsPage obtient l'élément sélectionné.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string selectedIndex = "";
if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
{
int index = int.Parse(selectedIndex);
DataContext = App.ViewModel.Items[index];
}
}
Jouer avec le modèle par défaut ci-dessus et poser des questions supplémentaires.
La beauté de la liaison de données et l'ObservableCollection est que vous pouvez simplement mettre à jour les données et les UX vont refléter ces changements immédiatement. C'est parce que tout changement de données déclenche un événement:
public string LineOne
{
get
{
return _lineOne;
}
set
{
if (value != _lineOne)
{
_lineOne = value;
NotifyPropertyChanged("LineOne");
}
}
}
NotifyPropertyChanged() qui diffuse cette information à la Vue.