【发布时间】:2020-12-23 23:18:34
【问题描述】:
我不明白如何创建命令来创建 MVVM 可点击矩形。这是我的代码:
<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"/>
在我的第一个矩形上,您可以看到我在事件后面创建了一个代码。首先,我不知道如何从后面的代码中访问我的 ViewModel。二这不是真正的 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 ???
}
}
当有人单击我的矩形时,我只需要能够更改存储在我的 viewModel 中存储的列表中的简单布尔值。为什么用 MVVM 做起来这么复杂?
【问题讨论】:
-
var rect = sender as Rectangle然后做任何你想做的事,虽然这是一个非常糟糕的设计,你应该使用数据绑定并将颜色绑定到一个字段而不是而不是这样做。学习和利用您所获得的抽象概念,而不是与它们抗争。 -
我得到了这个矩形......那么接下来呢?获取发件人不是问题。之后,我需要更新存储在 viewModel 中的列表中的布尔值。