基于Monster 组和GPT的调写:
用 WPF 中的 Triggers。可以在 Canvas.Resources 标记中定义两个 PathGeometry,分别为 pathAB 和 pathBA,然后用 Trigger 来切换这两个资源。
<Canvas>
<Canvas.Resources>
<PathGeometry x:Key="pathAB">
<PathFigure StartPoint="{Binding ElementName=UC,Path=stationA}">
<ArcSegment Point="{Binding ElementName=UC,Path=stationB}"
Size="{Binding ElementName=UC,Path=size}"
SweepDirection="Clockwise"></ArcSegment>
</PathFigure>
</PathGeometry>
<PathGeometry x:Key="pathBA">
<PathFigure StartPoint="{Binding ElementName=UC,Path=stationB}">
<ArcSegment Point="{Binding ElementName=UC,Path=stationA}"
Size="{Binding ElementName=UC,Path=size}"
SweepDirection="Clockwise"></ArcSegment>
</PathFigure>
</PathGeometry>
</Canvas.Resources>
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="(Canvas.Resources)">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource pathAB}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Canvas.MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="(Canvas.Resources)">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource pathBA}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
</Canvas>
在 Canvas.Triggers 中定义了两个 EventTrigger,分别对应于 Canvas.Loaded 和 Canvas.MouseLeftButtonDown 事件。当 Canvas 加载完成后,用 ObjectAnimationUsingKeyFrames 来将 Canvas.Resources 切换为 pathAB 资源。当鼠标单击 Canvas 时,用相同的方法将 Canvas.Resources 切换为 pathBA 资源。
该回答引用ChatGPTxml
![]()
![]()
xml