0
我想旋轉圖像,但我不想在代碼隱藏內部但在視圖模型中編碼事件。 現在一切正常,但代碼在代碼隱藏... (它是基於this教程)綁定事件以查看模型,旋轉圖像
我試圖
XAML:
[...]
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;
}
但是C#顯然不知道「RotateTransform」或方法本身。 有沒有可能這樣做?我沒有任何線索。 請嘗試儘可能簡單地解釋它。我剛開始使用Windows應用程序和XAML。 :D
我希望你能幫助我。
理想情況下,您可以將它作爲UserControl並在UserControl中放置一些代碼並不是一個壞主意。這段代碼與UI本身完全相關,所以你爲什麼要在ViewModel中使用它? –
那麼,我需要將RotateTransform.Angle作爲視圖模型中的一個值來使用它來做更多的事情。 我的想法是:如果整個動畫在ViewModel中,它可能會幫助... 但也許它不是最好的主意:) 但是,我有視圖模型Image.RotateTransform.Angle訪問? – capekall
如果你需要在View和ViewModel之間傳遞一些數據,比如Angle,你可以在你的UserControl中定義一個依賴屬性,並讓ViewModel的屬性綁定到它。 –