不透明度动画不';线程休眠后不工作(c#wpf)
我正在创建一个后退按钮(名为BackGrid),当我将光标放在网格内时,该按钮会出现,如果光标仍然不在网格内或后退按钮,则会在.7秒后消失 出现的部分很好,但消失的部分似乎不起作用 我进行了一些小故障排除,并尝试了以下操作:不透明度动画不';线程休眠后不工作(c#wpf),c#,wpf,C#,Wpf,我正在创建一个后退按钮(名为BackGrid),当我将光标放在网格内时,该按钮会出现,如果光标仍然不在网格内或后退按钮,则会在.7秒后消失 出现的部分很好,但消失的部分似乎不起作用 我进行了一些小故障排除,并尝试了以下操作: 删除整个任务。工厂代码并放置animateBackViewBox(false)位于CursorInsideSubGrid=false的正下方,尝试查看动画是否独立运行良好。结果是它运行正常 我的担心转移到了任务上。工厂代码,因为这是我第一次使用它,并且担心我没有正确地实现它
animateBackViewBox(false)
位于CursorInsideSubGrid=false
的正下方,尝试查看动画是否独立运行良好。结果是它运行正常animateBackViewBox(false)
并输入MessageBox.Show(“您在0.7秒后离开”)代码>取而代之。结果是它也能正确运行
private void ItemSubGrid_MouseEnter(object sender, MouseEventArgs e)
{
CursorInsideSubGrid = true;
animateBackViewBox(true);
}
private void ItemSubGrid_MouseLeave(object sender, MouseEventArgs e)
{
CursorInsideSubGrid = false;
Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(700);
if(CursorInsideSubGrid == false)
{
animateBackViewBox(false);
}
});
}
void animateBackViewBox(bool show)
{
DoubleAnimation da = new DoubleAnimation();
if (show == true)
{
BackGrid.IsHitTestVisible = true;
da.From = BackGrid.Opacity;
da.To = 100;
}
else
{
BackGrid.IsHitTestVisible = false;
da.From = BackGrid.Opacity;
da.To = 0;
}
da.AccelerationRatio = 1;
da.Duration = new Duration(TimeSpan.FromMilliseconds(300));
BackGrid.BeginAnimation(OpacityProperty,da);
}
不久前,我还遇到了GUI和更新方面的问题。在我的例子中,我有一个名为Loading的进度条,上面有一个标签,问题是,标签是GUI中的一个“洞” 我可以通过
Loading.Update();
我不知道它是否适合你,但值得一试
链接到我提到的问题/答案:加载在WPF上使用什么名称空间?Intellisense似乎无法推荐。请正确阅读我的描述;我有一个名为LOADING的PROGRESSBAR,我用UPDATE调用它(WPF等价物是
.UpdateLayout
)。我复制了你的代码,它对我很有用,请不要因为你不理解就投反对票。除此之外,我没有投反对票,实际上我正在全神贯注地阅读你提供的链接,因为我发现它很有用。为了证明这一点,我会投你的反对票,30分钟后收回。因为我没有声誉,所以它甚至没有让我投反对票,所以这应该是足够的证据。我的缺点是,有太多人直接给我答案,伙计们^^我用了一个调度计时器,它成功了()。