Xaml 将事件绑定到视图模型、图像旋转

Xaml 将事件绑定到视图模型、图像旋转,xaml,mvvm,Xaml,Mvvm,我想对图像进行旋转,但我不想在Codebehind中而是在视图模型中对事件进行编码。 现在一切正常,但代码在代码隐藏中。。。 (基于教程) 我试过了 XAML: 但C#显然不知道“旋转变换”或方法本身。 是否有可能这样做?我不知道。 请尽量简单地解释。我刚开始使用Windows应用程序和XAML:D 我希望你能帮助我。你可能想看看这样或这样的东西 我不明白你为什么要做这样的事。。。你能给我们更多的信息吗?用C#比用XAML容易得多。代码隐藏的目的就是做这些事情。理想情况下,您可以将其作为用户控件

我想对图像进行旋转,但我不想在Codebehind中而是在视图模型中对事件进行编码。 现在一切正常,但代码在代码隐藏中。。。 (基于教程)

我试过了

XAML:

但C#显然不知道“旋转变换”或方法本身。 是否有可能这样做?我不知道。 请尽量简单地解释。我刚开始使用Windows应用程序和XAML:D


我希望你能帮助我。

你可能想看看这样或这样的东西


我不明白你为什么要做这样的事。。。你能给我们更多的信息吗?用C#比用XAML容易得多。代码隐藏的目的就是做这些事情。

理想情况下,您可以将其作为用户控件,并在用户控件中隐藏一些代码。这段代码与UI本身完全相关,那么为什么要在ViewModel中使用它呢?好吧,我需要在视图模型中获得RotateTransform.Angle作为值,以便对其进行更多操作。我的想法是:如果整个动画都在ViewModel中,它可能会有帮助。。。但这可能不是最好的主意:)但是我在视图模型中有对Image.RotateTransform.Angle的访问权限吗?如果您需要在视图和视图模型之间传输一些数据,例如在您的案例中的Angle,您可以在UserControl中定义一个依赖属性,并让ViewModel的属性绑定到它。
 [...]
 ManipulationDelta="{Binding RotateManipulationDelta}"
 [...]
 <RotateTransform x:Name="{Binding RotateTransform}" />
private void RotateManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        // Alternatively, use Triangle Cosines Law.
        // It uses just one trigonometric function (Acos), but you first need to calculate the lengths of all sides.

        var x = this.RotateTransform.CenterX - e.Position.X;
        var y = this.RotateTransform.CenterY - e.Position.Y;

        double a1 = Math.Atan(y / x);
        double a2 = Math.Atan((e.Delta.Translation.Y - y) / (x - e.Delta.Translation.X));

        this.RotateTransform.Angle += a1 - a2;
    }