XAML从另一个视图启用/禁用视图

时间:2014-12-21 16:35:26

标签: c# wpf xaml

我是初学者,并且对XAML有一些困难。 我有一个主视图A,它有一个用于打开弹出窗口B的按钮。当发生这种情况时,窗口A应该仍然可见并打开,但是已禁用。我在代码背后做了这个(也许不是最干净的方式,但我知道的唯一方法)。我用于此的代码如下:

//Code behind from view A
        private void X-Button_Click(object sender, RoutedEventArgs e)
        {
            var BWindow = new BView();
            BWindow.Show();
            this.IsEnabled = false;
        }

我希望在关闭窗口B后再次启用窗口A,但我似乎无法完成这项工作。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你可以通过以下方式完成。

您在窗口的Closed事件上注册,当它关闭时,您取消注册该事件,并重新启用此窗体。

private void Button_Click(object sender, RoutedEventArgs e)
{
    Window BWindow = new BWindow();
    BWindow.Show();
    BWindow.Closed += BWindow_Closed;
    this.IsEnabled = false;
}

void BWindow_Closed(object sender, EventArgs e)
{
    Window win = sender as Window;
    if (win != null)
    {
        win.Closed -= BWindow_Closed;
    }
    this.IsEnabled = true;
}

答案 1 :(得分:0)

我假设您正在寻找模态窗口。请参阅此处提出的类似问题:How do make modal dialog in WPF?

解决方案是使用ShowDialog类中的Window方法。见这里参考: http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx

当您从现有窗口A打开新窗口B时,模态窗口是概念。当B打开时,A被禁用且无法使用。窗口A仅在B关闭时才会激活。