我一直在尝试让MVVM Lights EventToCommand工作。我看过我能找到的每个样本,甚至从作者网站下载了一个示例应用程序,但没有运气。
我正在使用MVVM Light,因为我需要将eventargs传递给我的命令。
我使用的是继承自标准wpf网格的自定义网格。
XAML:
<cc:MapGrid x:Name="grdTopLayer" Height="448" Width="640" Background="White">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<cmd:EventToCommand Command="{Binding GridClickCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</cc:MapGrid>
将DataContext设置为窗口的viewmodel。
视图模型:
public RelayCommand<MouseEventArgs> GridClickCommand { get; private set; }
private void InitializeCommands()
{
GridClickCommand = new RelayCommand<MouseEventArgs>(param => _gridHelper.AddGridImageToGrid(param), can => true);
}
在viewmodel构造函数中调用Initialize命令。
我在这里缺少什么?
Add_OnStartup:
private void App_OnStartup(object sender, StartupEventArgs e)
{
var mainWindow = new MainWindow
{
DataContext = new MainViewModel(new XmlReader(), new XmlWriter(), new GridHelper())
};
mainWindow.Show();
}