以下のように、xaml ページで単純なリピート アニメーションを試しています。
<StackPanel Canvas.Left="1" Canvas.Top="1">
<StackPanel.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard x:Name="sb_PathGeometry" RepeatBehavior="Forever">
<PointAnimationUsingPath Storyboard.TargetName="PathGeometry"
Storyboard.TargetProperty="Center"
Duration="0:0:1">
<PointAnimationUsingPath.PathGeometry>
<PathGeometry Figures="M 10,0 L 10,-182 L -199,-182" />
</PointAnimationUsingPath.PathGeometry>
</PointAnimationUsingPath>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
その後、以下のコードを使用してアイドル ページを制御する予定です (Find from another site):
using System.Windows.Threading;
using System.Windows.Interop;
namespace DS
{
public partial class MontagePage : Page
{
private EventHandler handler;
public MontagePage()
{
InitializeComponent();
handler = delegate
{
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(4);
timer.Tick += delegate
{
if (timer != null)
{
timer.Stop();
timer = null;
System.Windows.Interop.ComponentDispatcher.ThreadIdle -= handler;
ComponentDispatcher_ThreadIdle();
System.Windows.Interop.ComponentDispatcher.ThreadIdle += handler;
}
};
timer.Start();
//System.Windows.Interop.ComponentDispatcher.ThreadIdle -= handler;
Dispatcher.CurrentDispatcher.Hooks.OperationPosted += delegate
{
if (timer != null)
{
timer.Stop();
timer = null;
}
};
};
ComponentDispatcher.ThreadIdle += handler;
}
void ComponentDispatcher_ThreadIdle()
{
//Go to IdlePage.xaml
IdlePage idlepage = new IdlePage();
this.NavigationService.Navigate(idlepage);
}
}
}
私が要約できる問題は次のとおりです。
- そのアニメーションが永久に実行されているため、アイドル コントロールは起動していません。それを機能させる方法は?