WPF启用来自不同类的禁用按钮

本文关键字:按钮 同类 启用 WPF | 更新日期: 2023-09-27 17:50:56

我将以下按钮初始化为禁用,当某些事件发生时启用:

<Button.Style> <!-- initially disabled-->
                <Style TargetType="Button">
                    <Setter Property="IsEnabled" Value="False" />
                </Style>
            </Button.Style>
        </Button>

所以如果我运行这段代码(点击其他按钮),它就被启用了:

 private void Record_Click(object sender, RoutedEventArgs e)
        {
            Btn_Import.IsEnabled = true;
        }

启用第一个按钮的另一个按钮处于相同的形式。但是,如果我尝试在不同的窗口中创建一个带有按钮的事件,则不起作用。如果我在其他窗口的类中这样做:

 private void New_Click2(object sender, RoutedEventArgs e)
        {
            MainWindow xx = new MainWindow();
            xx.Btn_Import.IsEnabled = true;
        }

按钮确实被启用,我可以看到在调试模式,但它实际上是不启用,当我把鼠标悬停在它运行的应用程序。

请帮

WPF启用来自不同类的禁用按钮

在New_Click2中,您已经创建了MainWindow的新实例。然而,据我所知,在您提供的代码中,您从未显示过这个窗口实例:

xx.Show()

您在这里创建的MainWindow实例(xx)可能确实启用了其导入按钮,但它可能与您在屏幕上看到的实例不同。我怀疑,如果您添加一行来显示它,您将看到两个MainWindow实例。如果是这样,解决方案是你需要将实例从一个类传递到另一个类,例如通过全局实例,参数,注入等。