首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法关闭showDialog

无法关闭showDialog
EN

Stack Overflow用户
提问于 2013-10-10 13:41:18
回答 1查看 452关注 0票数 1

我有一个showDialog。在第一个showDialog加载之后,我将从viewModel调用另一个showDialog:

代码语言:javascript
复制
var connectionWindow = new ConnectionWindow();
connectionWindow.Closed += (o, args) =>
{
    if (connectionWindow.DialogResult.HasValue && connectionWindow.DialogResult.Value)
    {
    }
    else
    {
    }
};
connectionWindow.ShowDialog();

在第二个显示对话框中,我试图以下列方式关闭它:

代码语言:javascript
复制
 public ConnectionWindow()
 {
     _viewModel = new ConnectionWindowViewModel();
     InitializeComponent();
     DataContext = _viewModel;
     _viewModel.ClosingRequest += () =>
                                  {
                                      DialogResult = true;
                                      Close();
                                  };
 }

当closingRequest发生时,行上的执行中断

DialogResult =真;

VS中没有错误或其他任何内容,但它不会关闭第二个showDialog窗口。对如何结束第二个对话有什么想法吗?

编辑我想通过单击按钮关闭第二个showDialog。下面是我的按钮的xaml代码:

代码语言:javascript
复制
<Button Content="Save Connection" Width="108" IsDefault="True" Command="{Binding OnSaveConnectionCommand}">

Edit2问题在于从任务中触发OnClosingRequest:

代码语言:javascript
复制
private void OnSaveConnection(object sender)
{
    Mouse.OverrideCursor = Cursors.Wait;
    var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
    Task.Factory.StartNew(() =>
                          {
                              if (IsServerConnected(_entityBuilder.ToString()))
                              {
                                   OnClosingRequest();      
                              }
                              else
                              {
                                  MessageBox.Show("Cannot establish connection with server " , Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                              }
                          }).ContinueWith(_ => {Mouse.OverrideCursor = Cursors.Arrow;}, uiScheduler);
    }

当我将OnClosingRequest();移到ContinueWith时,一切都开始工作了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 06:16:27

问题在于从任务中触发OnClosingRequest:

代码语言:javascript
复制
private void OnSaveConnection(object sender)
{
    Mouse.OverrideCursor = Cursors.Wait;
    var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
    Task.Factory.StartNew(() =>
                          {
                              if (IsServerConnected(_entityBuilder.ToString()))
                              {
                                   OnClosingRequest();      
                              }
                              else
                              {
                                  MessageBox.Show("Cannot establish connection with server " , Properties.Resources.Error, MessageBoxButton.OK, MessageBoxImage.Error);
                              }
                          }).ContinueWith(_ => {Mouse.OverrideCursor = Cursors.Arrow;}, uiScheduler);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19297431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档