我想用新图像、pixelpainter / mapeditor 样式替换初始化画布上的单个图像。目前我设法替换 MouseEnter 上的图像,但这不是我的目标。我只想在用户按下鼠标按钮(可能使用 MouseEnter)在图像上方时更改图像。
<DataTemplate>
<Image Source="{Binding MapTileImage}" Stretch="Fill" Width="{Binding Width}" Height="{Binding Height}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<command:EventToCommand Command="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.ChangeTilesCommand}" CommandParameter="{Binding .}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Image>
</DataTemplate>
此代码仅适用于事件“MouseEnter”。MouseDown 甚至 PreviewMouseDown 以及其他事件在这里都不起作用。哪种方式最干净?我想保留我的 EventToCommand 和 RelayCommand。
在我的 MainViewModel 中,我所做的是:
private RelayCommand<BitmapModel> _changeTileCommand;
public RelayCommand<BitmapModel> ChangeTilesCommand {
get { return _changeTileCommand ?? (_changeTileCommand = new RelayCommand<BitmapModel>(UpdateTile)); }
}
和
public void UpdateTile(BitmapModel tile) {
// BitmapModel tile = drag.TileParam;
if (tile == null) return;
if (SelectedMapTile == null) return;
tile.MapTileImage = SelectedMapTile.MapTileImage;
}