1 つのポップアップを表示し、そのコンテンツを変更して、さまざまなコントロールを配置したいと思います。
まず、カスタム コントロールを作成します。
balloon = new LogEntryInfoBalloon();
balloon.SetMainWindow(this);
balloon.DataContext = vm.NotificationViewModel;
次に、ポップアップ コントロール (System.Windows.Controls.Primitives) を作成します。
localPop = new Popup();
localPop.AllowsTransparency = true;
localPop.Placement = PlacementMode.AbsolutePoint;
localPop.StaysOpen = true;
localPop.PlacementTarget = this;
localPop.Child = balloon;
配置ターゲットは MainWindow を指します。
バルーンを閉じる (非表示にする) タイマーを定義します。
localPopTimer = new Timer(new TimerCallback(CloseLocalPopup));
クローズ機能:
private void CloseLocalPopup(object args)
{
var act = new Action(() =>
{
localPop.IsOpen = false;
});
Dispatcher.BeginInvoke(act, null);
}
バルーンを表示するコードは次のようになります。
private void ShowNotifyBaloon(NotifyBaloonViewModel vm)
{
var act = new Action(() =>
{
localPop.IsOpen = true;
localPopTimer.Change(4000, Timeout.Infinite);
});
Dispatcher.BeginInvoke(act, null);
}