WPF プロジェクトが非アクティブであることを検出しています。私はこのコードを使用しています。
readonly DispatcherTimer activityTimer;
public MainWindow()
{
InitializeComponent();
InputManager.Current.PreProcessInput += Activity;
activityTimer = new DispatcherTimer
{
Interval = TimeSpan.FromSeconds(5),
IsEnabled = true
};
activityTimer.Tick += Inactivity;
}
#region
void Inactivity(object sender, EventArgs e)
{
FrameBody.Source = new Uri("Pages/Body.xaml", UriKind.Relative);
}
void Activity(object sender, PreProcessInputEventArgs e)
{
activityTimer.Stop();
activityTimer.Start();
}
#endregion
動作しますが、問題が 1 つだけあります。ユーザーがシステムで何もしない場合、フレームのソースが変更されます FrameBody.Source = new Uri("Pages/Body.xaml", UriKind.Relative); ただし、フレームの最近のソースにも移動します。
私のシステムでは、Frame で 1 つのウィンドウを使用しています。そして、そのフレームのソースは、ユーザーのシステムとの対話に応じて変化します。(ex. ユーザーがボタンをクリックすると、そのフレームのソースが変化し、数秒/分のマウスのクリックまたは突然の動きがない場合、フレームのソースが変化します。)
私のコードの何が問題なのか誰か教えてもらえますか? 上記のコードは、このWPF の非アクティブとアクティビティに基づいています