使用MVVM使用WPF裁剪图像

时间:2015-01-05 02:20:14

标签: .net wpf mvvm

http://www.codeproject.com/Articles/30725/Cropping-Images

本文介绍如何使用后面的代码裁剪图像,但我想使用View模型和命令裁剪图像。这可以实现吗?

我不确定如何发送(对象发送者,MouseEventArgs e)来命令。

1 个答案:

答案 0 :(得分:0)

这可能有点迟到回答这个问题,但我也试图使用mvvm创建一个图像裁剪器应用程序。我不是专家,仍然是WPF和MVVM的新手,但为了让我发送鼠标事件,如mouseleftbuttondown,mousemove,mouseleftbuttonup来查看我使用表达混合的eventtriggers。在视图中,我分配或命名我选择的事件触发器并将命令绑​​定到适当的控件。在我的应用程序中,我有一个画布,在Grid中有一个矩形子项,它也可以保存图像。用户导入图像并在图像上绘制矩形以对其进行裁剪,这是通过使用鼠标事件实现的。我在我的网格中绑定命令,当有人对我实现的事件(mouseleftbuttondown / up,mousemove)进行操作时,它将触发触发器。以下是它在xaml(或者我尚未完成的部分内容)中的外观:

    <Grid x:Name="GridLoadedImage" HorizontalAlignment="Left" VerticalAlignment="Top">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseLeftButtonDown">
                        <i:InvokeCommandAction Command="{Binding MouseLeftButtonDownCommand}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <Grid.LayoutTransform>
                    <ScaleTransform ScaleX="{Binding ElementName=slider1, Path=Value}" ScaleY="{Binding ElementName=slider1, Path=Value}"/>
                </Grid.LayoutTransform>
                <Image x:Name="LoadedImage" Margin="10" Source="{Binding ImagePath}"/>
                <Canvas  x:Name="BackPanel" Margin="10">
                    <Rectangle x:Name="selectionRectangle"  Stroke="LightBlue" Fill="#220000FF" Visibility="Collapsed"/>
                </Canvas>
    </Grid>

我目前正在将编码放在我的视图模型中,我计划为所有三个mouseevent提供函数命令。如果您打算使用事件触发器,则需要在mainwindow xaml

中添加以下语句
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

您还需要安装Expression Blend SDK。我安装了nuget包管理器,并用它来安装表达式混合。希望这有帮助