Tengo un proyecto de Silverlight 4 que muestra un gráfico y algunos botones para permitir al usuario cambiar el rango de fechas del gráfico. El rango de fechas también se puede pasar a través de un parámetro de cadena de consulta, algo así como http://myserver/MySilverlightPage/#?DateRange=OneMonth, y cuando el usuario hace clic en un botón también me gustaría actualizar la URL.¿Hay alguna manera de llamar a Navigate desde el ViewModel?
Entiendo que la forma de hacerlo es llamar al this.NavigationService.Navigate(new Uri(...))
, pero hasta donde puedo decir esto solo se puede hacer desde el código de la página de Silverlight. Y dado que estoy usando MVVM, todo el procesamiento del comando tiene lugar en la clase ViewModel. ¿Hay alguna manera de llamar al Navigate
o cambiar la URL desde ViewModel?
Para aclarar, el XAML incluye lo siguiente Button
:
<Button Content="1 Month View"
Command="{Binding OneMonthCommand}" />
Y la clase ViewModel contiene una propiedad OneMonthCommand
:
public ICommand OneMonthCommand { get; set; }
Cuando el botón se hace clic en el método de mi implementación ICommand Execute
se llama. La pregunta es: ¿cómo puedo cambiar la URL desde dentro de ese método?
¿Quién construye ViewModel en su caso? ¿Un código detrás de una vista? ¿O una tercera clase que crea ambas, la vista y el modelo de vista? –
En general, generalmente prefiero que ViewModel se cree como recurso en el XAML de la página. Pero cuando eso no es lo suficientemente robusto, me muevo a un creador externo. Creo que este patrón funcionaría en ambos casos. – RationalGeek