Non capisco come posso creare un comando per creare un rettangolo cliccabile MVVM. Qui è il mio codice:Come posso accedere al mio ViewModel dal codice sottostante
<Rectangle x:Name="Color01" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="10,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" MouseDown="Color_MouseDown" />
<Rectangle x:Name="Color02" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="115,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Rectangle x:Name="Color03" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="220,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Rectangle x:Name="Color04" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="325,29,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
Al mio primo rettangolo potete vedere ho creato un codice dietro evento. Per prima cosa non so come accedere al mio ViewModel dal codice sottostante. Due non è davvero MVVM.
public partial class MainWindow : Window
{
/// <summary>
/// Initializes a new instance of the MainWindow class.
/// </summary>
public MainWindow()
{
InitializeComponent();
Closing += (s, e) => ViewModelLocator.Cleanup();
}
private void Color_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// So what ???
}
}
Ho solo bisogno di essere in grado di cambiare un semplice valore booleano memorizzato in un elenco memorizzato nel mio ViewModel quando qualcuno clicca sul mio rettangolo. Perché è così complicato da fare con MVVM?
'var rect = mittente come Rectangle' e poi fare quello che vuoi ad esso, anche se questo è molto cattivo design e si _should_ con tutti i mezzi utilizzare l'associazione dati e si legano il colore a un campo piuttosto che fare questo. Impara e utilizza le astrazioni che ti vengono date piuttosto che combatterle. –
E ottengo il rettangolo ... e poi? Ottenere il mittente non è un problema. Dopo di che ho bisogno di aggiornare il mio valore booleano memorizzato in un elenco memorizzato nel mio viewModel. –