如何在主类之外访问WPF控件属性

我有一个“公共静态”类,该类在应用程序启动时被调用。在此类中,我试图设置多个复选框的“ IsEnabled”和“ IsChecked”属性。我在MainWindow.xaml.cs中执行此操作没有问题,但是当我尝试引用自定义类中的复选框时,复选框名称无法解析为Intellisense / auto-complete。我还收到错误消息“当前上下文中不存在名称'cbx_NameOfMyBox'”

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

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


            return;

        }
    }
}
ivysoftware2009 回答:如何在主类之外访问WPF控件属性

建议:

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

解决问题的方法(快速解决方案):

您正在以相反的方向进行操作。静态属性的主要目的是可以从项目中的任何位置进行访问(只要正确引用了名称空间)。因此,与其尝试从静态类访问控件,不如通过其他方式进行操作。在您的xaml.cs(后面的控件代码)中,例如在加载或启动控件或在合适的位置添加控件后,

cbx_GpoUpdate.IsEnabled = StartupSequence.your_boolean_property_for_this

您需要在静态类中具有布尔属性以存储所需的数据,并在控件启动时引用它。您还可以为不同的控件创建不同的其他属性,并且在每个控件的代码后面都可以在加载它们或单击按钮时或在任何其他事件情况下引用它们。

注意:我完全按照您做的方式开始工作(在后面的代码中),但是几个月后又进行了项目开发,我很难理解MVVM模式最适合WPF。现在,连续三年,我所有的项目都在MVVM中。开始学习MVVM并尽快进行学习。干杯。

本文链接:https://www.f2er.com/3092955.html

大家都在问