最小化后,程序不会从任务栏检索

我将介绍一下我想要做的事情:

我创建了一个自定义按钮,可以使用淡出动画最小化我的窗口,所以这里的代码是:

private void minimize_Window(object sender, EventArgs e) { var anim = new DoubleAnimation(0, (Duration)TimeSpan.FromSeconds(1)); anim.Completed += (s, _) => this.Minimize(); this.BeginAnimation(UIElement.OpacityProperty, anim); } private void Minimize() { WindowState = WindowState.Minimized; } 

它工作得很好,但问题是,当我尝试从任务栏检索我的程序时,它不会做任何事情(当我在最小化后从任务栏点击它时,我无法看到该程序)。 我从中理解的是,我的程序的不透明度在被最小化时被设置为0(因为动画)。 所以我使用Activated事件调用该方法:

 private void set_Opacity(object sender, EventArgs e) { rectangle2.Opacity = 1; WindowState = WindowState.Normal; } 

而且,同样的问题。 希望你能帮忙。

非常感谢你。 如果需要任何其他解释,请告诉我。

尝试使用另一个动画将不透明度设置回1:

  private void set_Opacity(object sender, EventArgs e) { var anim = new DoubleAnimation(1, (Duration)TimeSpan.FromSeconds(0)); this.BeginAnimation(UIElement.OpacityProperty, anim); } 

编辑 :这种方法工作的原因,简单地将不透明度设置为1不是由于依赖属性值设置优先级 。 简而言之,动画设置的值优先于“本地”值集,即通过赋值给属性设置的值。

在你的情况下,动画已经完成,但它仍然“保持” Opacity依赖属性。 但是,如果您使用创建淡出动画

  anim.FillBehavior = FillBehavior.Stop; 

然后动画将在完成后“释放” Opacity属性,然后您不需要另一个动画将其设置回1.原始的set_Opacity方法应该可以正常工作。

另请注意,不应在set_Opacity方法中指定WindowState = WindowState.Normal 。 如果您最大化窗口,单击您的按钮以最小化它,然后单击任务栏按钮,窗口不会再次出现最大化。