c# - 更改 WPF 用户控件对另一个用户控件的可见性(登录)

标签 c# wpf xaml

我使用 WPF 和 C# 创建了一个应用程序(无 MVVM),我有多个用户控件 包含网格、表格和其他东西。但最后我想添加一个登录页面,我开始构建它的方式是将 xaml 中的所有用户控件可见性默认设置为折叠:

 Visibility="Collapsed"

为了使登录用户控件可见,在登录后和后面的 C# 代码中,我想将其他用户控件的可见性更改为可见,并将登录页面设置为折叠。

我尝试过类似的方法,但没有成功:

  Students studentsWin = new Students(); 
  studentsWin.Visibility = Visibility.Visible;

  Members MembersWin = new Members();
  MembersWin.Visibility = Visibility.Visible;

我在 stackoverflow 中读到过使用依赖属性,因为我从未使用过 MVVM,所以我不知道如何使用它:我正在尝试这样的事情:

    public static DependencyProperty WindowVisibilityProperty = DependencyProperty.Register("WindowVisibility", typeof(Visibility), typeof(MemberStats), null);

    public Visibility WindowVisibility
    {
        get
        {
            return (Visibility)GetValue(WindowVisibilityProperty);
        }
        set
        {
            SetValue(WindowVisibilityProperty, value);
        }
    }

但是我不知道如何在用户控件的xaml中使用WindowVisibility, 任何帮助将不胜感激。

最佳答案

Students studentsWin = new MembresList(); //Students is the user control name >studentsWin.Visibility = Visibility.Visible;

Members MembersWin = new AjouterMembre();//Members is the user control name >MembersWin.Visibility = Visibility.Visible;

如果“Students”是用户控件名称(意味着您将 x:Name="Students"添加到 XAML 中的控件中),那么您将能够在后面的代码中使用以下行访问它:

Students.visibility = Visibility.Visible;

我将在下面探索您的其余代码,希望对您有所帮助。如果您对 C# 和 WPF 还很陌生,我希望以下内容不会让您觉得事情过于复杂而灰心丧气。

是否“学生studentsWin = new MembresList();”编译? MembresList 必须是 Students 类的子类,这将是一个奇怪的类层次结构。但即使该行能够编译,后面的行也肯定无法编译。 “Students”必须是类的名称,但 Visibility 是 UI 对象的实例属性。如果 Students 是 UserControl 的子类,您可以这样做

Students myStudent = new Student(); //Assumes Students subclasses Usercontrol
myStudent.visibility = Visibility.Visible; //This compiles but is useless

上面的代码可以编译,但没有用,因为新的 myStudent 对象尚未添加到表单的任何位置。它只是一个存在于定义它的方法范围内的对象。

依赖属性是一个有用的东西,但在您总体上很好地掌握了 C# 和 WPF 之前我不会担心它们。那东西相当先进。

关于c# - 更改 WPF 用户控件对另一个用户控件的可见性(登录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32925112/

相关文章:

c# - 部署失败 : CLR Trigger

c# - 在 SwashBuckle 中使用 IOperationFilter 删除路由

c# - 如何在不返回 asp.net View 的情况下验证表单?

wpf - 弹出窗口永不关闭

c# - WPF - 使用嵌套的 HierarchicalDataTemplate 在 TreeView 中刷新 CollectionView 而不会丢失选择

wpf - 触发器适用于 IsEnabled,但不适用于 CheckBox 中的 IsChecked

c# - 在 WPF 中覆盖样式值的正确方法

c# - 为什么我宁愿使用 native dll 或 com 服务器从 C# 调用 Delphi 代码?

wpf - WPF 中的实时心电图

.net - 如何在代码隐藏中动态添加转换器