一些背景...
我试图在单击按钮时提供视觉反馈...基本上是加载弹出消息(使用 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;
}