【问题标题】:How to window.showDialog when wpf data binding in datagrid Row Details load加载datagrid行详细信息中的wpf数据绑定时如何window.showDialog
【发布时间】:2019-08-07 05:30:52
【问题描述】:

我将一个ObservableCollection 的视图模型绑定到它。每个视图模型都用于数据网格行详细信息加载。 当数据库的数据加载然后显示window.ShowDialog 并在for循环完成后自动关闭窗口

【问题讨论】:

    标签: c# wpf datagrid progress-bar


    【解决方案1】:

    对于您的情况,您想使用window.Show() 而不是window.ShowDialog()

    以下是它们之间的区别:

    • window.Show();

    代码不会停止。这意味着您打开窗口并且代码继续执行。在上面的示例中,它将执行“从数据库获取数据”和“for 循环”。 使用此方法,用户可以在应用程序中的窗口之间切换。在应用程序执行正常进行时使用

    • window.ShowDialog();

    代码停止,直到窗口关闭。它将从新窗口执行代码,但在上面的示例中,它只会在他的代码中关闭窗口后继续“从数据库获取数据”。 在这种情况下,只有打开的窗口才会响应用户输入,直到它关闭

    你应该这样做:

     Window win = new window();
     win.Show();
    
     //get data from database
     //do for loop
    
     win.Close();
    

    【讨论】:

    • 这不会显示窗口的内容,除非您确保 UI 线程有机会运行,例如通过从数据库中异步获取数据。
    • 是的,没错,但问题中的用户没有提到这一点。我的回答是正确的。
    • 不,一点也不。不提异步方面,这只是一个坏建议。如果您相应地编辑您的帖子,我很乐意删除我的反对票。
    • 还有很多情况下,您可以从数据库中获取数据而无需异步。
    猜你喜欢
    • 2011-08-01
    • 2010-11-28
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多