0

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

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

在我正常抱怨做“正确”之前......

  • 我没有编写应用程序,只是负责在不进行全面检查的情况下尝试提高性能(和/或性能感知)。
  • 在某个时候,我希望我可以重新设计这个应用程序,现在只需要稍加调整即可。
  • 没有 ViewModel ......代码真的,真的耦合到 UI。(就像我说的,我没有正确的应用程序)
  • 由于各种原因,我不能在这种情况下使用线程,而不是打破应用程序中的太多其他部分和我的时间限制。

那么在这种情况下有什么方法可以实现这一点(顺便说一句......没有 ViewModel 并且我现在无法创建一个,因为紧密的 Logic-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;
        
    }
4

1 回答 1

1

为任何长时间运行的进程占用 UI创建一个后台工作人员真的很麻烦吗?

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

于 2012-05-21T18:15:36.130 回答