[英]How do I call an unreferenced method from a distant class? (C# and VB.NET allowed)
對於我一生,我無法找到解決方案:我設置了一個類,該類可以執行多項操作,其中之一是操作wpf窗口。 這些窗口之一是MainWindow.xaml
。
因此,例如,我希望此類關閉MainWindow.xaml
,即是否從OtherClass.cs
調用一個方法。
基本上:我想從一個遙遠的類訪問窗口( MainWindow.xaml.cs
)背后的代碼中的未引用方法,盡管在同一項目(Visual Studio)中。
當我使用MainWindow( using MainWindow
或在vb.net中 imports MainWindow
)並使用其成員關閉窗口時,如下所示:
using MainWindow
Public class OtherClass
{
// OtherClass is instanced elsewhere and then is decided to close MainWindow.
// So I imagine doing the following:
private void CommandClose()
{
CloseMainWindow();
}
...
}
在MainWindow.xaml.cs中:
Public class MainWindow
{
Public void CloseMainWindow()
{
this.close();
}
...
}
雖然我收到以下錯誤: “引用非共享成員需要對象引用”。
意思是我應該做類似的事情:
using MainWindow
Public class OtherClass
{
MainWindow myWindow // Though now I have a new window :/
private void CommandClose()
{
myWindow.CloseMainWindow();
}
...
}
因此,要訪問MainWindow.xaml.cs中的任何成員而不創建新實例,我是否需要共享它們? 但這將使它無法對窗口執行任何操作,因為那時close命令將不可用!
我可能忽略了一些東西,但是atm我似乎沒注意到。 有誰願意向我展示一種處理這種情況的方法?
注意:如果有人在想,我正在Windows Presentation Foundation中工作。
為了進一步闡明,這里是對描述我的情況的先前答案之一的評論:
我想做的是在另一個類中運行命令,該類是WPF窗口的公共成員。 該窗口已被實例化並顯示。 我只想訪問其公共成員,以便為方便起見可以從另一個類操縱該窗口。 我的這個OtherClass.cs是處理控制台操作的類。 控制台是位於MainWindow.xaml.cs中的自定義控件。 當用戶鍵入例如/ close時,我希望關閉MainWindow.xaml,但不僅限於此,因為將來我想添加更多功能。
您仍然需要一個對象引用。 而且您將必須使用應用程序上下文。
這是您獲取打開或關閉它們的任何類型的窗口的引用列表的方式:
var windows = Application.Current.Windows.OfType<MainWindow>();
foreach (var window in windows)
{
window.Close();
}
您可以在它們上調用任何其他想要的方法,並且可以搜索任何其他類型的窗口,但這是您找到要查找的窗口的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.