Si crea un nuevo proyecto de Windows Phone y usa Windows Phone Databound Template, tendrá la mayor parte del trabajo hecho para usted.
Lo que debe hacer es configurar ViewModel para que contenga todos los datos de su aplicación. Puede serializar y deserializar estos datos utilizando IsolatedStorage para que se guarden en las sesiones de aplicaciones y en Tombstoning.
En la plantilla se dará cuenta de MailViewModel y ItemViewModel. MainViewModel almacena todos los datos que su aplicación necesita, incluida una ObservableCollection de ItemViewModel, y ItemViewModel representa el tipo de datos individual para su aplicación.
En la página DetailsPage.xaml, querrá vincular cada cuadro de texto a los elementos de App.MainViewModel. Establezca el enlace en TwoWay si desea que el ViewModel se actualice tan pronto como el usuario manipule los datos en DetailsPage.xaml. Opcionalmente, puede establecer la vinculación en OneWay y luego tener un botón Aceptar que vuelve a escribir los cambios en ViewModel y los guarda en IsolatedStorage.
Aquí es un ejemplo de lo que es un aspecto de encuadernación como:
<TextBlock x:Name="ListTitle" Text="{Binding LineOne}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
En este caso LineOne es una propiedad en ItemViewModel y la página obtiene estos datos de la cadena de consulta cuando el usuario selecciona un elemento de la MainPage .xaml. El DataContext para la página determina de dónde proviene la información de datos.
Aquí está el fragmento donde la página principal pasa el elemento seleccionado del ViewModel a la página de detalles.
// 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;
}
Así es como la página de detalles obtiene el artículo seleccionado.
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];
}
}
Juegue con la plantilla predeterminada de arriba y plantee preguntas adicionales.
La belleza de la vinculación de datos y ObservableCollection es que puede actualizar los datos y el UX reflejará esos cambios de forma inmediata. Esto se debe a que cualquier cambio en los fuegos de datos fuera de un evento:
public string LineOne
{
get
{
return _lineOne;
}
set
{
if (value != _lineOne)
{
_lineOne = value;
NotifyPropertyChanged("LineOne");
}
}
}
NotifyPropertyChanged() que transmite esta información a la vista.
¿Hay algún ejemplo REALMENTE SIMPLE de cómo puedo hacer algo como esto usando MVC y WP7? – webdad3
No tengo un ejemplo realmente simple, pero acabo de iniciar la plantilla "datos enlazados" y la miré hasta que pude ver cómo funcionaba. –
Esto podría ayudarlo (aunque está en ASP, en realidad es una demostración bastante buena de MVC) http://agilewarrior.wordpress.com/2010/09/18/silverlight-model-view-controller-mvc-example/ –