我得到一个警告,这可能是一个主观问题,可能会被关闭,但无论如何我都会问.
我基本上试图从一个从MainWindow中加载的UserControl访问WPF应用程序中的MainWindow上的按钮.
我正在从UserControl的代码后面这样访问它:
((MainWindow)Application.Current.MainWindow).btnNext
Run Code Online (Sandbox Code Playgroud)
但它确实看起来很混乱,从我读过的内容来看,它并不是最佳实践.任何人都能够提供一个答案,构成从MainWindow的当前实例访问控件/属性的最佳实践 - 或者任何其他活动的窗口/视图?
您可以使用Window.GetWindow方法获取对UserControl的父窗口的引用.加载UserControl后调用此方法:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
this.Loaded += (s, e) =>
{
MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
if (parentWindow != null)
{
//...
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用Application.Current.Windows属性访问所有打开的窗口:
MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
使用哪一个取决于您的要求.如果由于某种原因需要引用应用程序的主窗口,可以坚持使用当前的方法.如果您想要引用UserControl的父窗口,那么使用Window.GetWindow方法会更好.
最佳实践通常是使用MVVM设计模式并将UI控件绑定到可由多个视图共享的视图模型的源属性.但这是另一个故事.有关MVVM模式的更多信息,请参阅以下链接:https://msdn.microsoft.com/en-us/library/hh848246.aspx
归档时间: |
|
查看次数: |
7074 次 |
最近记录: |