Estoy aprendiendo WPF y MVVM en este momento (o al menos estoy tratando de ...).Cambio de vista en Buttonclick
Creé una pequeña aplicación de muestra, que muestra una ventana con 2 botones, cada uno de ellos debería mostrar una nueva vista al hacer clic. Así que creé 3 UserControls (DecisonMaker con los 2 botones y un control de usuario para cada "clicktarget").
Así que limitan el CotentControl del MainWindow a una propiedad llamada "PresentaciónActual" en mi MainWindowViewModel
Código de MainWindow.xaml:
<Window x:Class="WpfTestApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTestApplication"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>
<Grid>
<ContentControl Content="{Binding CurrentView, Mode=OneWay}" />
</Grid>
</Window>
Código de MainWindowViewModel:
class MainWindowViewModel
{
private UserControl _currentView = new DecisionMaker();
public UserControl CurrentView
{
get { return _currentView; }
set { _currentView = value; }
}
public ICommand MausCommand
{
get { return new RelayCommand(LoadMouseView); }
}
public ICommand TouchCommand
{
get { return new RelayCommand(LoadTouchView); }
}
private void LoadMouseView()
{
CurrentView = new UserControlMouse();
}
private void LoadTouchView()
{
CurrentView = new UserControlTouch();
}
}
El UserControl (DecisionMaker) inicial aparece como supuesto. También se llama al método LoadMouseView
. Pero la Vista no cambia. ¿Qué me estoy perdiendo?
ACTUALIZACIÓN: ¡Muchísimas gracias! Me perdí la interfaz INotifyPropertyChanged. ¡Todas sus respuestas fueron geniales, muy precisas y útiles! No sé cuál aceptar - Creo que es la manera más justa de aceptar la "primera" respuesta?
Acepté la respuesta de blindmeis, ya que resolvió el problema y me ayudó a entender MVVM mejor. ¡Pero cada respuesta fue realmente genial gracias a todos ustedes!
modelo de vista debería tener ninguna referencia a una visión/control de usuario. por lo que debe eliminar esto de su modelo de vista. este es un buen punto de partida: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx – blindmeis