private void Module_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
// new SolidColorBrush(Color.FromArgb(32, 0, 0, 0)) belongs to black color
LayoutRoot.OpacityMask = new SolidColorBrush(Color.FromArgb(32, 0, 0, 0));
// Some code over here...
}
第一个语句是更新名为 LayoutRoot 的网格的 OpacityMask。
这里第一个语句之后的代码是一个很大的过程,大约需要一分钟或更长时间才能执行。
但不透明度蒙版只会在执行此事件后一分钟后更改背景,即页面的不透明度。在此处输入代码
请帮助我,以便在执行大约 1 分钟或更多分钟的长代码之前运行不透明蒙版。
最佳答案
事件处理程序方法中的代码会阻塞 UI 线程。
声明处理程序方法异步,并在任务操作中调用长时间运行的代码:
private async void Module_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
LayoutRoot.Opacity = 0.125;
await Task.Run(() =>
{
// long running code...
});
LayoutRoot.Opacity = 1;
}
关于c# - OpacityMask 无法按预期在 C# 代码中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805044/