重複の可能性:
プログラムを最小化した後、プログラムがタスクバーから取得されない
背景 - 各項目にいくつかのボタンを含む ListBox があります。ボタンをクリックすると、ラベルにメッセージが表示され、フェードアウトします。コンテンツの設定を処理し、それを表示してから、ストーリーボードを使用してフェードアウトする方法があります (以下を参照)。
これは最初は問題なく動作しますが、同じリストボックス項目をさらにクリックしても何も起こりません。デバッグすると、コンテンツが変更されていることが示されますが、コントロールが表示されることはありません。私が見逃している明らかなこと(または、代わりに機能する方法)を誰かが指摘できますか?
private void SetLabelMessageContent(Panel panel, string message)
{
Label lblMessage = panel.Children.OfType<Label>().First();
if (lblMessage != null)
{
// Set content and make sure its visible
lblMessage.Content = message;
lblMessage.Visibility = Visibility.Visible;
lblMessage.Opacity = 1.0;
// Set the storyboard going - will fade it out
var storyboard = lblMessage.FindResource("MessageFadeOut");
if (storyboard is Storyboard)
{
((Storyboard)storyboard).Clone().Begin(lblMessage);
}
}
}
MessageFadeOut リソースは次のとおりです。
<Storyboard x:Key="MessageFadeOut">
<DoubleAnimation BeginTime="0:0:2.0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.25"/>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:2.25" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Hidden</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>