如何在 main class 之外访问 WPF 控件属性

How to access WPF control properties outside of main class

我有一个 'public static' class 在应用程序启动时被调用。在这个 class 中,我试图设置几个复选框的 "IsEnabled" 和 "IsChecked" 属性。我在 MainWindow.xaml.cs 中执行此操作没有问题,但是当我尝试引用自定义 class 中的复选框时,复选框名称未在 Intellisense/auto-complete 中解析。我也收到错误,"The name 'cbx_NameOfMyBox' does not exist in the current context"

如何访问 MainWindow.xaml.cs 之外的控件属性?

namespace Widget
{
    public static class StartupSequence
    {
        public static void Begin()
        {
            GetDomain.Start();
            cbx_GpoUpdate.IsEnabled = false;


            return;

        }
    }
}

建议:

  1. 您需要实现MVVM 并绑定数据。
  2. 如果您打算使用静态 class 来共享数据,那么我建议您使用单例 class。您不应该使 class 静态化。您应该将 class 的构造函数设为私有。然后,创建一个静态 属性 可以 return 你的 class。 (只需进行一些 google 搜索以了解单例)

您的问题的解决方案(作为快速修复):

你做的方向相反。 static 属性 的主要目的是可以从项目中的任何地方访问它(前提是正确引用了名称空间)。因此,与其尝试从静态 class 访问您的控件,不如以另一种方式进行。在您的 xaml.cs(控件后面的代码)中,例如在加载或启动控件时或在合适的地方添加

cbx_GpoUpdate.IsEnabled = StartupSequence.your_boolean_property_for_this

您需要在静态 class 中有一个布尔值 属性 来存储所需的数据,并在控件启动时引用它。您还可以为不同的控件创建不同的其他属性,并且在每个控件的隐藏代码中,您可以在加载它们或单击按钮或在任何其他事件场景中引用它们。

注意:我完全按照您的方式开始(在后面的代码中),但经过几个月和项目之后,我通过艰难的方式了解到 MVVM 模式最适合 WPF。现在,连续 3 年,我所有的项目都在 MVVM 中。开始学习 MVVM 并尽快转向它。干杯。