我正在尝试使用 WPF 制作简单的动画。我有使用ItemTemplateSelector绘制球的画布。
<ItemsControl ItemsSource="{Binding Path=Cells}" Name="ItemsControlCells">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Width="450" Height="450">
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplateSelector>
<selector:Selector CellWithBall="{StaticResource CellWithBall}"/>
</ItemsControl.ItemTemplateSelector>
</ItemsControl>
这是 DataTemplate 的示例。
<DataTemplate x:Key="CellWithBall">
<Canvas>
<Rectangle Canvas.Left="{Binding Path=Position.x}" Canvas.Top="{Binding Path=Position.y}"
Fill="{Binding Path=BallColour}" Width="{Binding Path=Size}" Height="{Binding Path=Size}"
Stroke="Black" StrokeThickness="0.1">
<Rectangle.InputBindings>
<MouseBinding Gesture="LeftClick"
Command="{Binding Path=DataContext.ClickedCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
CommandParameter="{Binding}" />
</Rectangle.InputBindings>
</Rectangle>
</Canvas>
</DataTemplate>
当移动球事件触发时,模型发送到视图模型路径。路径是球必须经过的点列表。示例:在运动场单元格 (0;0) 中绘制球(意味着视图模型中的属性 Position 设置为 (0;0))。比我们想将球移动到单元格(1;1)。逻辑得到这样的路径 {(0;0),(0;1),(1;1)}。
我怎样才能实现这种不破坏 MVVM 实现的动画?如何将路径传递给视图?每一个想法都会受到赞赏。