我使用 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/