访问用户控件中的Application.MainWindow内容
本文关键字:Application MainWindow 内容 用户 控件 访问 | 更新日期: 2023-09-27 18:23:50
在WPF应用程序中,访问MainWindow内容很容易,但在用户控制中如何访问。
在WPF应用程序中,如果我的MainWindow名称是Window1,并且我必须从同一应用程序中的其他类访问它的一个名为CName的字符串变量。
Window1 ww = Application.Current.MainWindow as Window1;
String reqstring = ww.CName ;
我也想在usecontrol中做同样的事情。
假设我的usercontrol名称是ABCcontrol,第一个/main类名是ABCconrolLib
namespace ABCcontrol
{
public partial class ABCcontrolLib : UserControl
{
Public String CName = "ABC";
//....
}
}
现在,我想通过使用Application.Control.MainWindow或其他类似的方式在同一用户控件的其他类中访问这个CName
请帮助我,因为这是我在WPF 中的第一个UserControl
您可以访问Application.Current.MainWindow,因为在整个应用程序中只有一个MainWindow实例,所以他们将其定义为静态属性。如果您的用户控件具有相同的特性(只需要在整个应用程序中使用它的一个实例),那么您也可以在那里定义一个静态属性。类似于:然后您可以访问名称属性,如UserControl1.Instance.CName
public partial class UserControl1 : UserControl
{
public static UserControl1 Instance
{
get;
private set;
}
Public String CName = "ABC";
public UserControl1()
{
if (Instance != null)// there should be just one instance
throw new NotSupportedException();
Instance = this;
InitializeComponent();
}
}
如果出现错误,那么您的usercontrol并不是只有一个实例,您必须定义一个List并在那里注册每个usercontrol实例。类似于:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
(App.Current as App).UserControl1List.Add(this);
InitializeComponent();
}
}
public partial class App : Application
{
public App()
{
UserControl1List = new List<UserControl1>();
}
public List<UserControl1> UserControl1List
{
get;
private set;
}
}
然后你可以像(App.Current as App)一样访问每个实例。UserControl1List[0]。。。或者您可以使用字典来存储其中的每个UserControl。