WPF 弹出窗口和 UI 线程

本文关键字:UI 线程 窗口 WPF | 更新日期: 2023-09-27 18:34:56

一些背景...
我正在尝试在单击按钮时提供视觉反馈...基本上是加载弹出消息(使用 WPF 弹出控件(。问题是...因为我在 UI 线程上,并且在同步代码中单击按钮并发生逻辑,然后弹出窗口出现。我希望弹出窗口在按钮单击时显示,运行一些代码,然后消失(弹出窗口应该在代码运行时显示(。

意识到我可以通过线程完成它,但现在这不是一个选择。我有时间,没有时间"以正确的方式"修复应用程序。

在我得到关于"正确"做的正常呻吟之前......

  • 我没有编写应用程序,只是负责在没有全面检修的情况下尝试提高性能(和/或性能感知(。
  • 在某些时候,我希望我可以重新装备这个应用程序,现在只有一点点的调整会削减它。
  • 没有视图模型...代码真的非常非常有效地耦合到 UI。(就像我说的,我没有纠正应用程序(
  • 由于各种原因,我不能在这种情况下使用线程,尤其是在应用程序中破坏太多其他部分和我的时间限制的情况下。

那么在这种情况下有没有办法做到这一点(顺便说一句......没有 ViewModel,由于逻辑与 UI 的紧密耦合,我现在无法创建一个(?



弹出控件

<Popup Name="popLoading" Placement="Center">
            <Border CornerRadius="10" Background="#ffffff">
                <Grid Width="400" Height="200">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition/>
                        <ColumnDefinition/>
                    </Grid.ColumnDefinitions>
                    <Image Grid.Column="0" Name="imgLoading" Source="/foo/Images/loading.png"  />
                    <TextBlock Name="txtLoading" Text="Retreiving data..."/>
                </Grid>
            </Border>
        </Popup>          

按钮点击

private void MyButton_Click(object sender, RoutedEventArgs e)
    {
        popLoading.IsOpen = true;
        
        //Do Some Stuff hopefully popup is showing up on the screen. 
        popLoading.IsOpen = false;
        
    }

WPF 弹出窗口和 UI 线程

为任何长时间运行的进程创建后台工作线程真的很麻烦吗?

我在WinForms中使用的另一个UI技巧是在底部有一个状态栏,它会在加载某些内容时显示(回到我会做这个程序做错的事情的日子(